C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Проблема с шаблонами в C++Builder, Линкер не видит тела методов....
Aractan
Отправлено: 04.05.2004, 06:56


Ученик-кочегар

Группа: Участник
Сообщений: 22



Если шаблон полностью определен в хэдэре (*.h файле), то все работает, если же тела методов перенести в *.cpp, то линкер их не нахордит. В тоже время если в этом же модуле создать обычный не шаблонный класс, то все работает в обоих случаях (если тела методов объявлены тут же и если в *.срр).
Aractan
Отправлено: 04.05.2004, 09:24


Ученик-кочегар

Группа: Участник
Сообщений: 22



Все нашел ответ
Question:
Why won't my template code compile? I have the implementation and definition in separate source and header files.

Answer:
When the compiler sees a template being used, it must know the implementation of the template in order to create a template instance. When you have the template definitions "#included" in your module, the compiler sees nothing of the template implementations and cannot create the template instances.

The only solution at this time is to either #include the implementation file (CPP) into your code before your code makes use of the templates, or keep the implementation inside the header file.

The C++ standard defines the keyword "export" that solves this problem, but this keyword is not supported at the time of this FAQ (current version is C++ Builder 4), nor are there any major C++ compilers that support this keyword.
http://community.borland.com/article/0,141...0,20329,00.html
Тема закрыта

Вернуться в Вопросы программирования в C++Builder