Люди добрые помогите!
Сам я совсем не спец в С++, но требуется кой-чего откомпилить, а оно не хочет.
Проблема вот такая:
Есть несколько bla-bla-bla.hpp файлов с описанием неких классов. Все эти классы юзают некую обявленную переменную CI_PACKAGE_ACCESS
Например вот так:
class ciObject : public ResourceObj {
CI_PACKAGE_ACCESS
которая объявлена:
#define CI_PACKAGE_ACCESS \
friend class ciEnv; \
friend class ciScope; \
friend class ciObjectFactory; \
friend class ciConstantPoolCache; \
friend class ciField; \
friend class ciConstant; \
friend class ciFlags; \
friend class ciExceptionHandler; \
friend class ciCallProfile; \
friend class ciFieldLayout; \
friend class ciSignature; \
friend class ciBytecodeStream; \
friend class ciByteCodeStream; \
friend class ciFieldLayoutStream; \
friend class ciSignatureStream; \
friend class ciExceptionHandlerStream; \
friend class ciObject; \
friend class ciNullObject; \
friend class ciInstance; \
friend class ciMethod; \
friend class ciSymbol; \
friend class ciArray; \
friend class ciObjArray; \
friend class ciTypeArray; \
friend class ciKlass; \
friend class ciInstanceKlass; \
friend class ciMethodKlass; \
friend class ciSymbolKlass; \
friend class ciArrayKlass; \
friend class ciObjArrayKlass; \
friend class ciTypeArrayKlass; \
friend class ciKlassKlass; \
friend class ciInstanceKlassKlass; \
friend class ciArrayKlassKlass; \
friend class ciObjArrayKlassKlass; \
friend class ciTypeArrayKlassKlass;
Т.е. из этого обявления следует, что класс имеет кучу друзей и сам себе друг товарищ и брат, что, естественно, не нравится компилятору.
Может кто поможет, какие ключи задать GCC стоб он сглотнул такую конструкцию? Или это не реально, и надо это место вдумчево напильником доработать? В принципе это не проблема, как видите, файлов не много, но хотелось бы сырцы сильно не уродовать.
gcc version 3.3.2 20031022 (Red Hat Linux 3.3.2-1)
Это, типа, на федоре у меня. А компилю я j2sdk-1.3.1 (JVM от IBM, SUN, BlackDown откомпилирована компилятором ветки 2.х и на федоре не работает)