Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как хитро обойти двусмысленность? проблема с неймспесом System, Builder 5 
:(
    Опции темы
Homskiy
Дата 14.6.2008, 04:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 14.6.2008

Репутация: нет
Всего: нет



Значит, есть проект (не мой), который надо использовать. Он написан на С. Переписывать есесно впадел, учитывая, что надо из него лишь пару функций. Мой проект пишется на Builder 5, и в итогуе использует VCL и все прибамбасы C++. В не моем проекте есть следующие строчки в хидере:
  
Код

Word   word[MAX_SENTENCE]; 
String * String_create()


на что компилятор матюкается: 
  •  Ambiguity between 'Word' and 'System::Word'
  •  Ambiguity between 'String' and 'System::String'

Пробовал поотключать нафик все параметры в параметрах проекта + поставил флажек на использование С + назначил использование хидеров и либов из Turbo C, эта проблема исщезла (появились другие, но это к теме не относится).
Но такой подход все-таки не подходит. Все прибамбасы в итоговом проекте должны быть и все должно будет компилироваться вместе, так сказать... 

Так вот, можно ли как-то запретить использование неймспейса System локально? Или как-то по другому обойти эту проблему? 

ЗЫ:
Переписывание не моего проэтка - не подходит - слишком дохера переписывать + дополнительно в нем разбираться, а мне надо всего-то пару функций... Так что несоизмеримость затрат и результата... 
PM MAIL   Вверх
bronislav
Дата 14.6.2008, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 334
Регистрация: 29.1.2008
Где: Украина::Донецк

Репутация: 2
Всего: 3



А может легче отдельно реализовать эти самые пару функций?


--------------------
user posted image
иногда проще и быстрей обойти лужу, даже если кажется что она мелкая и путь напрямик короче - ведь она может скрывать открытый люк (с) mes
PM MAIL   Вверх
Homskiy
Дата 14.6.2008, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 14.6.2008

Репутация: нет
Всего: нет



Нее. Там прога которая делает синтаксический анализ текста. А мне надо собсно функции которые делают этот анализ для предложений, возращают структуру и дают возможность обхода по ней... Самому это не наваять... 
PM MAIL   Вверх
bronislav
Дата 14.6.2008, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 334
Регистрация: 29.1.2008
Где: Украина::Донецк

Репутация: 2
Всего: 3



Как я понимаю компилятор ругается на пересечение неймспейсов. Вот так с ходу даже не знаю как это решить  smile

Можно попробывать указывать неймспейс явно. Используя System::Word, там где тебе надо использовать эти типы, а используемую по умолчанию директиву using namespace System - убрать.


--------------------
user posted image
иногда проще и быстрей обойти лужу, даже если кажется что она мелкая и путь напрямик короче - ведь она может скрывать открытый люк (с) mes
PM MAIL   Вверх
Homskiy
Дата 15.6.2008, 03:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 14.6.2008

Репутация: нет
Всего: нет



Вот как раз интересно где она убирается... хелпа молчит на эту тему.. Если подскажите где вообще в билдере находится управление директивами (я понимаю, что строчка в файле проекта, "pragma ..." - как бе отвечает за это дело, вроде) то буду очень признателен. 
PM MAIL   Вверх
bronislav
Дата 15.6.2008, 09:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 334
Регистрация: 29.1.2008
Где: Украина::Донецк

Репутация: 2
Всего: 3



Дело в том, что я не знаю где это еще можно посмотреть в билдере, кроме как в начале файлов *.cpp *.h

Это вам к специалистам по билдеру в соответсвующий раздел.

p.s. директива pragma не управляет использованием неймспейсов


--------------------
user posted image
иногда проще и быстрей обойти лужу, даже если кажется что она мелкая и путь напрямик короче - ведь она может скрывать открытый люк (с) mes
PM MAIL   Вверх
fish9370
Дата 15.6.2008, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 15.4.2007
Где: Москва

Репутация: 1
Всего: 1



Цитата(Homskiy @  14.6.2008,  04:57 Найти цитируемый пост)

Word   word[MAX_SENTENCE]; 
String * String_create()


Цитата(Homskiy)

на что компилятор матюкается: 

 Ambiguity between 'Word' and 'System::Word'
 Ambiguity between 'String' and 'System::String'


компилятор ругается на неоднозначность..

сделай так:

Код

::Word   word[MAX_SENTENCE]; 
::String * String_create()


Это сообщение отредактировал(а) fish9370 - 15.6.2008, 12:57


--------------------
undefined
PM MAIL WWW ICQ   Вверх
xvr
Дата 16.6.2008, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(Homskiy @ 14.6.2008,  04:57)
Значит, есть проект (не мой), который надо использовать. Он написан на С. Переписывать есесно впадел, учитывая, что надо из него лишь пару функций. Мой проект пишется на Builder 5, и в итогуе использует VCL и все прибамбасы C++. В не моем проекте есть следующие строчки в хидере:
  
Код

Word   word[MAX_SENTENCE]; 
String * String_create()


на что компилятор матюкается: 

  •  Ambiguity between 'Word' and 'System::Word'
  •  Ambiguity between 'String' and 'System::String'


Добавь перед #include'ом с этим хидером
Код

#define Word MyWord
#define String MyString

и соответственно
Код

#undef Word
#undef String
 после. Так же не забудь окружить хидер extern "C" { ... } (если его нет в самом хидере)
Отключтить using namespace System; не получится - он зашит в system.hpp, который напрямую включается в vcl.h Можно переставить #include <vcl.h> с твоим инклюдом, но тогда придется отключить предкомпилированные хидеры  smile 

PM MAIL   Вверх
Homskiy
Дата 16.6.2008, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 14.6.2008

Репутация: нет
Всего: нет



ну тут уже мне разрулили как это сделать
http://forum.vingrad.ru/forum/topic-216732...y1550655/0.html

с помощью адаптера
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0474 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.