![]() |
|
|
![]()
|
|
| 040375 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 6.4.2006 Репутация: нет Всего: 2 |
Builder C++ 6
линковщик не может скомпоновать следующий код
Компилятор всё нормально пропускает, Линковщик выдаёт ошибку [Linker Error] Unresolved external 'PPP::obj' referenced from E:\C_PROJECTS\BCBUILDER_PROJECTS\TEST_STATIC_MEMBER\PPP.OBJ как я понял - линковщик почему-то не видит статический член класса - почему? Что не так сделано? Ведь стандарт С++, насколько я помню, позволяет это, раз компилятор не сругался. Из этого положения конечно есть масса выходов - но хотелось бы знать - в чём причина именно при этом. |
|||
|
||||
| Fazil6 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 11 Всего: 60 |
||||
|
||||
| Burka |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 429 Регистрация: 11.5.2007 Репутация: нет Всего: 2 |
может потому что #include "PPP.h" два раза в коде?
-------------------- Великие умы обсуждают идеи; средние умы обсуждают события; мелкие умы обсуждают людей. |
|||
|
||||
| 040375 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 6.4.2006 Репутация: нет Всего: 2 |
Не думаю, дело не в том, что два раза #include - а иначе то вообще как подключать реализацию и использовать её, к тожу же там разумеется #ifndef PPP_C.....и т.д. перед определением класса.
Да, дело именно в том - что она была только объявлена, но почему нестатические члены можно не инициализировать явно (они по умолчанию в конструкторе инициализацию проходят), а статические не инициализируются по умолчанию? Дайте пожалуйста ссылочку - где подробно почитать про это, а то эти вопросы во многих источниках как то объходят |
|||
|
||||
| Fazil6 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 11 Всего: 60 |
суть не в инициализации... Суть в определении. Нестатические члены создаются при создании объекта. Статик данные общие для всех объектов класса и естественно никакого отношения к созданию объектов не имеют, поэтому такие члены нужно определять каждый самостоятельно. |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |