Managed C++ template in VS 2008
От: Smartcat Беларусь  
Дата: 12.11.08 09:36
Оценка:
Не могу скомпилировать простой пример в VS 2008 (Console CLR Application.) постоянно выдает ошибки типа:

Error 1 error LNK2020: unresolved token (06000018) Description<int>::.ctor ConsoleCLR.obj ConsoleCLR
Error 2 error LNK2020: unresolved token (06000019) Description<int>::~Description<int> ConsoleCLR.obj ConsoleCLR

Код примера таков:

//--------------------------------
//Template.h
//--------------------------------

template <class TypeOfValue>
public ref class Description{
public:
    Description();
    Description(TypeOfValue type);
    ~Description();
    void Show();
    String ^ Message;
    TypeOfValue Value;
};


//--------------------------------
//Template.cpp
//--------------------------------
#include "Template.h"

template <class TypeOfValue>
Description<TypeOfValue>::Description(){
}

template <class TypeOfValue>
Description<TypeOfValue>::~Description(){
}

template <class TypeOfValue>
void Description<TypeOfValue>::Show(){
    Console::WriteLine(L"{0}: {1}", Message, Value);
}


Но вот когда пишешь реализацию конструктора и деструктора в *.h файле, а остальные методы — в *.cpp, то все компилируется нормально. Без каких — либо ошибок линкера.

Подскажите в чем проблема. Неужели необходимо определять конструктор и деструктор шаблона в файле хидера? И никаких путей нет, чтобы определение конструктора и деструктора вынести из *.h файла в *.cpp?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.