我在返回方法的参数作为模板时遇到一些问题,请看:

// 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:函数_wmain中引用的未解决的外部符号“public:int __thiscall CTestClass::getNewValue(void)”(?getNewValue @?$ CTestClass @ H @@ QAEHXZ)

最佳答案

您将要阅读C++常见问题解答"Why can't I separate the definition of my templates class from its declaration and put it inside a .cpp file?"

实际上,您需要在头文件中定义CTestClass<T>::getNewValue()

关于c++ - 将问题模板与退货链接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3653216/

10-13 06:28