Впервые столкнулся с необходимостью использовать шаблоны.
Все сделал как положено, компиляция проходит на ура, но
при линковке обнаруживается, что ни в одном объектнике
нет кода для методов шаблонного класса:
к примеру:
CSomeClass.obj : error LNK2001: unresolved external symbol
"public: __thiscall CMyView<class CSomeClass *>::CMyView<class CSomeClass *>(void)"
(??0?$CMyView@PAVCSomeClass@@@@QAE@XZ)
Поясните в чем дело :???:
Здравствуйте Aristokrat, Вы писали:
A>Впервые столкнулся с необходимостью использовать шаблоны.
A>Все сделал как положено, компиляция проходит на ура, но
A>при линковке обнаруживается, что ни в одном объектнике
A>нет кода для методов шаблонного класса:
A>к примеру:
A>CSomeClass.obj : error LNK2001: unresolved external symbol
A> "public: __thiscall CMyView<class CSomeClass *>::CMyView<class CSomeClass *>(void)"
A> (??0?$CMyView@PAVCSomeClass@@@@QAE@XZ)
A>Поясните в чем дело
Объявление шаблонного класса и его реализация должны находиться в одном файле.
Здравствуйте Aristokrat, Вы писали:
A>Впервые столкнулся с необходимостью использовать шаблоны.
A>Все сделал как положено, компиляция проходит на ура, но
A>при линковке обнаруживается, что ни в одном объектнике
A>нет кода для методов шаблонного класса:
A>к примеру:
A>CSomeClass.obj : error LNK2001: unresolved external symbol
A> "public: __thiscall CMyView<class CSomeClass *>::CMyView<class CSomeClass *>(void)"
A> (??0?$CMyView@PAVCSomeClass@@@@QAE@XZ)
A>Поясните в чем дело
А где у тебя реализация методов шаблонного класса? Случаем не в .cpp, она должна быть в .h, т.е там же где у тебя лежит сам шаблон. Эта тема постоянно проходит по форуму. Поищи.
Здравствуйте Aristokrat, Вы писали:
A>Впервые столкнулся с необходимостью использовать шаблоны.
A>Все сделал как положено, компиляция проходит на ура, но
A>при линковке обнаруживается, что ни в одном объектнике
A>нет кода для методов шаблонного класса:
A>к примеру:
A>CSomeClass.obj : error LNK2001: unresolved external symbol
A> "public: __thiscall CMyView<class CSomeClass *>::CMyView<class CSomeClass *>(void)"
A> (??0?$CMyView@PAVCSomeClass@@@@QAE@XZ)
A>Поясните в чем дело
Похоже на то что реализацию шаблонного класса ты вынес в .cpp
Реализация шаблонного класса, должна находится в том же файле, что и объявление.
Или можно реализацию вынести в другой .h файл и проинклюдить его в файл с объявлением.
Ed.ward