Связывание проблем с шаблоном возврата - PullRequest
1 голос
/ 06 сентября 2010

У меня возникают некоторые проблемы при возврате параметра метода в качестве шаблона, посмотрите:

// CTestClass.h
template<class T> 
class CTestClass 
{
public:
    T getNewValue();
};

// CTestClass.cpp
template<class T> 
T CTestClass<T>::getNewValue()
{
    return 10; // just for tests I'm returning hard coded 10
}

// main.cpp
int _tmain(int argc, _TCHAR* argv[])
{
    CTestClass<int> s;
    int a = s.getNewValue();
    return 0;
}

Я получил следующую ошибку:

Ошибка LNK2019: неразрешенный внешний символ "public: int __thiscall CTestClass :: getNewValue (void) "(? getNewValue @? $ CTestClass @ H @@ QAEHXZ), на который ссылается функция _wmain

1 Ответ

3 голосов
/ 06 сентября 2010

Вы захотите прочитать FAQ по C ++ «Почему я не могу отделить определение своего класса шаблонов от его объявления и поместить его в файл .cpp?»

По сути, вам нужно определить CTestClass<T>::getNewValue() в заголовочном файле.

...