Hi All!
Надеюсь на помощь в любом виде. Дело в том, что мне сейчас требуется откомпилировать один мертвый проект, все исходники которого на С++. К сожалению, этот язык я в качестве экспериментов пользовал последний раз еще в прошлом тысячелетии, так что приходится начинать с "чистого листа". Вобщем с помощью поиска, хелпов, манов и соображаловки удалось пройти через некоторые препоны, но вот с понедельника застрял на такой проблемке: Вот такой кусок кода:
---------------------------------------------------------------------------------
188 inline ostream &operator << (ostream &os, const CORBA::Exception &exception)
189 {
190 CORBA::Any any;
191 any <<= exception;
192 CORBA::TypeCode_var tc = any.type();
193 const char *p = tc->name();
194 if (*p != '\0') os << p;
195 else os << tc->id();
196 return os;
197
198 }
199
200 inline ostream &operator << (ostream &os, CORBA::Exception *exception) {
201 return os << *exception;
202 }
203
204 #endif /* CORBA.hh */
-------------------------------------------------------------------------
генерит такую ошибку:
--------------------------------------------------------------------------------
c++ -I../../include -I../../include/Nobel -D__x86__ -D__linux__ -D__OSVERSION__=2 -D__OMNIORB3__ -O2 -pthread -D__REENTRANT -c GeometryImpl.cc -o obj/GeometryImpl.o
In file included from ../../include/Polhem/GeometryImpl.hh:44,
from GeometryImpl.cc:36:
../../include/Nobel/CORBA.hh: In function `std::ostream& operator<<(std::ostream&, const CORBA::Exception&)':
../../include/Nobel/CORBA.hh:194: error: no match for 'operator<<' in 'os << p'
../../include/Nobel/CORBA.hh:189: note: candidates are: std::ostream& operator<<(std::ostream&, const CORBA::Exception&)
../../include/Nobel/CORBA.hh:195: error: no match for 'operator<<' in 'os << (&tc)->CORBA::TypeCode_var::operator->()->CORBA::TypeCode::id()'
../../include/Nobel/CORBA.hh:189: note: candidates are: std::ostream& operator<<(std::ostream&, const CORBA::Exception&)
make[2]: *** [obj/GeometryImpl.o] Ошибка 1
------------------------------------------------------------------------------
Помогите побороть. Нутром чую, что что-то простое, вроде правильного ключика компилятору выставить, но ... не хватает...
Разборки с проектом на С++ (Нужна помощь)
Модератор: Модераторы разделов
-
Grom
- Сообщения: 260
- ОС: Debian Etch, RHEL-5.4
Разборки с проектом на С++
Послужной список: Slackware-3.x, RedHat-4.x,5.x,6.x,7.x, FedoraCore-3, Debian Etch/Lenny
Осваиваю: RHEL-5.4
Осваиваю: RHEL-5.4
-
WolfON
- Сообщения: 226
Re: Разборки с проектом на С++
Просто добавь в начало файла такую строчку:
Код: Выделить всё
using namespace std;ArchLinux on AXP2000+/768/ATI R9600XT
Registered Linux User 396336
Registered Linux User 396336
-
oav
- Бывший модератор
- Сообщения: 296
Re: Разборки с проектом на С++
и еще чета подозрительна эта строка
попробуй
Код: Выделить всё
any <<= exception;попробуй
Код: Выделить всё
any << exception;-
WolfON
- Сообщения: 226
Re: Разборки с проектом на С++
Код: Выделить всё
any <<= exception;Вполне приличная строка, типа побитовый сдвиг влево.
ArchLinux on AXP2000+/768/ATI R9600XT
Registered Linux User 396336
Registered Linux User 396336
-
d_Sun
- Сообщения: 291
Re: Разборки с проектом на С++
(oav @ Пятница, 12 Августа 2005, 15:27) писал(а):и еще чета подозрительна эта строка
Код: Выделить всё
any <<= exception;
попробуй
Код: Выделить всё
any << exception;
За такое надо минусы в репутацию ставить, но я не буду... :devil_2: Если Вы не знаете С - то не учите других делать ошибки! :devil_2:
Моя подпись сильно длинная :)
-
oav
- Бывший модератор
- Сообщения: 296
Re: Разборки с проектом на С++
(d_Sun @ Пятница, 12 Августа 2005, 17:17) писал(а):(oav @ Пятница, 12 Августа 2005, 15:27) писал(а):и еще чета подозрительна эта строка
Код: Выделить всё
any <<= exception;
попробуй
Код: Выделить всё
any << exception;
За такое надо минусы в репутацию ставить, но я не буду... :devil_2: Если Вы не знаете С - то не учите других делать ошибки! :devil_2:
Что такое побитовый сдвиг влево - я знаю, а что этот оператор можно переопределить в пользовательских классах - действительно не знаю. А про "репутацию" ....ладно, не будем
oav добавил в 12.08.2005 18:32
Сейчас посмотрел стандарт, действительно можно - ужас
-
Grom
- Сообщения: 260
- ОС: Debian Etch, RHEL-5.4
Re: Разборки с проектом на С++
(WolfON @ Четверг, 11 Августа 2005, 19:24) писал(а):Просто добавь в начало файла такую строчку:
Код: Выделить всё
using namespace std;
Спсибо за подсказку
#include <iostream>
не определен ни в этом файле, ни в предыдущих вложениях, в этом и сидела проблема. Ладно, пошел я дальше с бубном упражняться.
Послужной список: Slackware-3.x, RedHat-4.x,5.x,6.x,7.x, FedoraCore-3, Debian Etch/Lenny
Осваиваю: RHEL-5.4
Осваиваю: RHEL-5.4
-
d_Sun
- Сообщения: 291
Re: Разборки с проектом на С++
(oav @ Пятница, 12 Августа 2005, 17:32) писал(а):(d_Sun @ Пятница, 12 Августа 2005, 17:17) писал(а):(oav @ Пятница, 12 Августа 2005, 15:27) писал(а):и еще чета подозрительна эта строка
Код: Выделить всё
any <<= exception;
попробуй
Код: Выделить всё
any << exception;
За такое надо минусы в репутацию ставить, но я не буду... :devil_2: Если Вы не знаете С - то не учите других делать ошибки! :devil_2:
Что такое побитовый сдвиг влево - я знаю, а что этот оператор можно переопределить в пользовательских классах - действительно не знаю. А про "репутацию" ....ладно, не будем
oav добавил в 12.08.2005 18:32
Сейчас посмотрел стандарт, действительно можно - ужас
Да не переопределить его можно! Это стандартная нотация С - сокрощенная форма скажем: X = X << Y; что есть X<<=Y;
Моя подпись сильно длинная :)