Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Линковщик не видит методов класса...

279
18 августа 2006 года
bave
456 / / 07.03.2004
Вообщем, делаю так:
//items.hpp
template <class T>
class CList
{
public:
CList();
~CList();
//... и т.д.

//...
protected:
T t_data;
};

//items.cpp
#include "items.hpp"
template <class T>
CList<T>:: CList()
{
//...
}
template <class T>
CList<T>:: ~CList()
{
//...
}
-----------------------------------
//main.cpp
#include "items.hpp"
CList<CMyClass> g_SomeList;
-----------------------------------------------------
И в итоге получаю:
Linking...
main.obj : error LNK2001: unresolved external symbol "public: __thiscall CList<class CMyClass>::CList<class CMyClass>(void)" (??0?$CList@VCMyClass@@@@QAE@PAV0@@Z)
main.obj : error LNK2001: unresolved external symbol "public: __thiscall CList<class CMyClass>::~CList<class CMyClass>(void)" (??1?$CList@VCMyClass@@@@QAE@XZ)
Debug/bdm.exe : fatal error LNK1120: 2 unresolved externals
----------------------------------------------------------------------
Вот не вижу нафига линковщик докапывается...
Пpичём если реализацию методов делаю в том же файле, в котором
класс объявляю(т.е. items.hpp) - тогда всё работает...
ПРичём, такая фигня только с классами в которых шаблоны используются...
240
18 августа 2006 года
aks
2.5K / / 14.07.2006
Так и есть методы шаблонных класов должны быть реализованны в том же файле что и сам класс.
Оптимально их даже даже реализовывать не отдельно от класса так:
 
Код:
template <class T>
CList<T>:: ~CList()
{
//...
}

А прямо внутри описания класса, как в Java:

Код:
template <class T>
class CList
{
public:
CList(){
//.....
}
~CList(){
//.....

}
void someMethod(){
//...
}
//... и т.д.

//...
protected:
T t_data;
};
562
18 августа 2006 года
tarekon
175 / / 19.08.2003
еще тут можно почитать

http://forum.codenet.ru/showthread.php?t=26753
279
18 августа 2006 года
bave
456 / / 07.03.2004
Спасибо. Буду думать как выкрутиться...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог