Здравствуйте, Erop, Вы писали:
E>Здравствуйте, Molchalnik, Вы писали:
M>>если же создавать через new, то всё нормально. конструктор нормально вызывается. M>>что делать??? M>>почему???
E>Есть такое предложение. В хедере пишешь:
ANNdebuglogC& dbglog();
E>
а в cpp пишешь:
static ANNdebuglogC log( "тут, то, что тебе тут надо написать" );
E>ANNdebuglogC& dbglog() { return log; }
E>Ставишь точку останова в dbglog() и смотришь откуда она зовётся, такая красивая, что конструктор ещё не позвался.
E>Или само поправится, или отладишься, или синглетон Майерса прикрутишь... E>Типа такого:
ANNdebuglogC& dbglog()
E>{
E> static ANNdebuglogC log(" ... " );
E> return log;
E>}
E>static ANNdebuglogC& garantee = dbglog(); // гарантируем создание до функции main()
E>То, что это лог, наводит таки на мысли, что запись происходит откуда-то не оттуда, откуда надо
E>Второй вариант -- ты нечаянно сломал что-то в проекте и теперь просто из рантайма не вызывается точка входа, отвечаюзая за создание статических объектов...
спасибо!!!
Я вроде исправил.
там была такая штука, что я раньше брал свой "стандартный" лог — класс и переделывал его под нужды проекта.
Теперь я решил Сделать_Всё_По_Уму (ТМ) и наследовать переделанный под нужды проекта лог от стандартного. при этом стандартный лог в отдельном файле, лог_под_этот_проект — в другом модуле. все хедеры правильно подключены.
ну так вот, если наследовать класс, определённый в другом файле, то борланд компилер по каким-то причинам глючит. А если перенести всё водин файл, вроде работать начинает. точнее завтра скажу, когда потестю немного эту идею.
Здравствуйте, Molchalnik, Вы писали:
M>спасибо!!!
Для "спасибо" тут есть кнопки
M>Я вроде исправил.
Поздравляю.
M>там была такая штука, что я раньше брал свой "стандартный" лог — класс и переделывал его под нужды проекта. M>Теперь я решил Сделать_Всё_По_Уму (ТМ) и наследовать переделанный под нужды проекта лог от стандартного. при этом стандартный лог в отдельном файле, лог_под_этот_проект — в другом модуле. все хедеры правильно подключены.
M>ну так вот, если наследовать класс, определённый в другом файле, то борланд компилер по каким-то причинам глючит. А если перенести всё водин файл, вроде работать начинает. точнее завтра скажу, когда потестю немного эту идею.
Лучше всё-таки разобраться чего ему не хватает. Скорее всего дело не в наследовании, а в чём-то другом.
Я конкретно про билдер не в курсе, зато в курсе про много других "немного странных" компиляторов.
Часто бывает так, что компиляторы кладут код inline-методов не во все объектники, а только в каки-то конкретные. Например в тот, в котором описан какой-нибудь конкретный конструктор, или просто какой-нибудь из конструкторов/деструкторов. Так что вполне может быть так, что у твоей базы какая-то такая эвристика работает, а у наследника нет.
Кстати, "совсем по уму" можно ещё и агрегировать то, что у тебя база.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Molchalnik, Вы писали:
E>>А то двойное подчёркивание в начале нехорошо. M>уже убрал. а почему нехорошо?
По стандарту. Такие имена зарезервированы для всяких расширений языка и внутренних нужд компилятора.
E>>3) Я так и не нашёл отличий между определением и объявлением... M>там, если другие мои ответы почитать, исправлено на это:
Ну тут особенность движка такая, что можно получать сообщения не в виде дерева, а в виде ответов на твои и нтересующие тебя. Так что если в нескольких подветках общаешься, то многим участникам сильно не сразу всё становится видно.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Molchalnik, Вы писали:
M>>>что делать??? L>>сменить компилер
M>Честно говоря, mfc после vcl кажется каменным веком и хочется руки кое-кому оборвать за такую либу...
это поначалу. потом привыкаешь, появляются наработки и даже начинает нравиться
но не mfc единым. например, в мире есть еще qt, более дружественная к бывшим борландистам
Здравствуйте, VladFein, Вы писали:
VF>Здравствуйте, Molchalnik, Вы писали:
M>>Честно говоря, mfc после vcl кажется каменным веком и хочется руки кое-кому оборвать за такую либу...
VF>Плохому танцору...
Не передёргивайте. Мне ничего не мешает. Я могу и на mfc станцевать. Хороший мастер и кривым молотком сможет шуруп ввинтить. Просто очень интересно и весело слушать мнения в защиту завинчивания шурупов кривыми молотками...
Здравствуйте, Ligen, Вы писали:
L>Здравствуйте, Molchalnik, Вы писали:
M>>>>что делать??? L>>>сменить компилер
M>>Честно говоря, mfc после vcl кажется каменным веком и хочется руки кое-кому оборвать за такую либу... L>это поначалу. потом привыкаешь, появляются наработки и даже начинает нравиться
А оно всегда так — сначала больно, потом привыкаешь, потом начинает нравится. Этот процесс называется "мазохизм".
L>это поначалу. потом привыкаешь, появляются наработки и даже начинает нравиться
правильно, это такой особый подход от майкрософт — для использования их библиотеки нужно написать свою, которая их библиотеку доводит до ума
L>но не mfc единым. например, в мире есть еще qt, более дружественная к бывшим борландистам
Хотя ничего против qt я не имею, но он настолько отдельная и специфическая песня, что лучше её в суе не вспоминать...
Здравствуйте, Molchalnik, Вы писали:
M>Хотя ничего против qt я не имею, но он настолько отдельная и специфическая песня, что лучше её в суе не вспоминать...
Справедливости ради стоит заметить, что VCL тоже та еще песня и тоже весьма специфическая. Одна начинка чего стоит
Здравствуйте, Ligen, Вы писали:
M>>Платформа — C++builder 6 M>>если же создавать через new, то всё нормально. конструктор нормально вызывается. L>широкоизвестный глюк борландовского компилятора. например, похожая тема
Причём застарелый и развесистый.
Я ещё на borland 5.0, последнем добилдеровском их компилере с похожим боролся. Даже в их трекер как-то запостил.
А то, что он по разному проявляется в разных версиях указывает по ходу на какую-то структурную ошибку дизайна...
M>>что делать??? L>сменить компилер
Для дебилдера 6 — выход один — не использовать объекты сложныех классов как глобальные/статические.
Вместо них использовать синглетоны создающиеся при первом обращении или в main-е.
Ну и проверить на более новых версиях — может само рассосалось.
Ну и по поводу сменить компилер — правильный выход.
Тот же MinGW порождает более быстрый код. Да и подобных багов в нём куда меньше.
Ну и VCL на Qt — привыкаешь быстро, а плюсов — море.