Шаблоны С++
От: Aristokrat Россия  
Дата: 15.05.02 05:39
Оценка: 1 (1)
Впервые столкнулся с необходимостью использовать шаблоны.
Все сделал как положено, компиляция проходит на ура, но
при линковке обнаруживается, что ни в одном объектнике
нет кода для методов шаблонного класса:

к примеру:
CSomeClass.obj : error LNK2001: unresolved external symbol
"public: __thiscall CMyView<class CSomeClass *>::CMyView<class CSomeClass *>(void)"
(??0?$CMyView@PAVCSomeClass@@@@QAE@XZ)

Поясните в чем дело :???:
Если отладка — процесс исправления ошибок,
то программирование — процесс их внесения.
Re: Шаблоны С++
От: Bell Россия  
Дата: 15.05.02 05:43
Оценка:
Здравствуйте 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>Поясните в чем дело


Объявление шаблонного класса и его реализация должны находиться в одном файле.
Любите книгу — источник знаний (с) М.Горький
Re: Шаблоны С++
От: ak_alex Россия  
Дата: 15.05.02 05:44
Оценка:
Здравствуйте 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, т.е там же где у тебя лежит сам шаблон. Эта тема постоянно проходит по форуму. Поищи.
Re: Шаблоны С++
От: Ed.ward Россия  
Дата: 15.05.02 05:46
Оценка:
Здравствуйте 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
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.