Надо структуру классов мне проработать, а тут кой какая трабла: Есть: enum ASUTP_ERR { SUCCESS=0x0, // Все успешно SRE_INIT, // Ошибка при инициализации sre-файлов CONFIG_APP, // Ошибка Конфигурирования программы DATABASE_CONNECT, // Ошибка связи с базой данных INIFILE_INVALID, // Некорректный Ini-файл ORA_INIT, // Ошибка при инициализации Oracle ORA_APPEND, // Ошибка добавления в Oracle INIFILE_NOT_FOUND, // Ini-файл не найден CFGDBF_NOT_FOUND, // Cfg.dbf не найден }; и enum ASUTP_RESULT{ SUCCESS = 0x0, FAIL }; пишу метод класса: ASUTP_RESULT CreateObject(AnsiString PathObj) virtual; А получаю что SUCCESS множественный, но ведь он же в разных перечислениях, где с тупил?
EvilsInterrupt Опять мануалы не читал. Грубо говоря, элементы перечисления становятся элементами той области видимости, в которой они объявлены: если в классе - элементами класса, в файле - элементы единицы трансляции. Объявляй их в структурах, если они в классе, либо в пространстве имён, если они в файле, либо ставь префиксы.
Ща вот еще одна трабла проект на Borland Builder C++ 6.0: Код (Text): class ASUTPbase { public: virtual ASUTP_RESULT ReadObject(AnsiString PathObj,TDateTime Momment) = 0; ..... class AllMig : public ASUTPbase { public: ... ASUTP_RESULT AllMig::ReadObject(AnsiString PathObj,TDateTime Momment) тут пишу реализацию Получаю: [C++ Error] ASUTP.hpp(8): E2316 'AllMig::ReadObject(AnsiString,TDateTime)' is not a member of 'AllMig' Как это так, Ведь AllMig наследует все от базового, в котором есть ReadObject. А компилятору не нравится, что я упускаю? Очень надо!!!
EvilsInterrupt Вот именно, что наследует, т.е. берет как есть из базового класса. Поэтому свою реализацию AllMig::ReadObject можно иметь только при переопределении родительского метода
leo Я сделал заново объявление чистого виртуального методода в потомке и почему-то заработало!!! Разве шапку и объявление из базового компилятор не мог взять?
Мог, но не захотел ))))) Еще раз повторяю: если ты в объявлении потомка AllMig не переобъявляешь родительские методы ASUTPbase, значит их объявление и реализация соответствует родительской и ес-но попытка приписать новую реализацию без переобъявления приводит к ошибке