| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Unresolved Error |
| Автор: 040375 6.6.2007, 13:11 | ||
| Builder C++ 6 линковщик не может скомпоновать следующий код
Компилятор всё нормально пропускает, Линковщик выдаёт ошибку [Linker Error] Unresolved external 'PPP::obj' referenced from E:\C_PROJECTS\BCBUILDER_PROJECTS\TEST_STATIC_MEMBER\PPP.OBJ как я понял - линковщик почему-то не видит статический член класса - почему? Что не так сделано? Ведь стандарт С++, насколько я помню, позволяет это, раз компилятор не сругался. Из этого положения конечно есть масса выходов - но хотелось бы знать - в чём причина именно при этом. |
| Автор: Burka 6.6.2007, 16:41 |
| может потому что #include "PPP.h" два раза в коде? |
| Автор: 040375 6.6.2007, 20:21 |
| Не думаю, дело не в том, что два раза #include - а иначе то вообще как подключать реализацию и использовать её, к тожу же там разумеется #ifndef PPP_C.....и т.д. перед определением класса. Да, дело именно в том - что она была только объявлена, но почему нестатические члены можно не инициализировать явно (они по умолчанию в конструкторе инициализацию проходят), а статические не инициализируются по умолчанию? Дайте пожалуйста ссылочку - где подробно почитать про это, а то эти вопросы во многих источниках как то объходят |
| Автор: Fazil6 6.6.2007, 21:36 | ||
суть не в инициализации... Суть в определении. Нестатические члены создаются при создании объекта. Статик данные общие для всех объектов класса и естественно никакого отношения к созданию объектов не имеют, поэтому такие члены нужно определять каждый самостоятельно. |