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
Тема закрыта |
|
|