template<typename Type>
class List
{
public:
List(void);
~List(void);
...
}
它继承了C++多态性与模板类
template<typename Type>
class LinkedList : public List<Type>
{
public:
LinkedList(void);
~LinkedList(void);
...
}
但是当我
List<int>* list = new LinkedList<int>();
总会有 error LNK2019: unresolved external symbol "public: __thiscall LinkedList<int>::LinkedList<int>(void)" ([email protected]@@[email protected]) referenced in function _wmain
我知道,模板类型时确定编译,我觉得应该可以确定typename Type的时候com打桩,然后在运行时确定派生类的类型。以这种方式使用模板类可以使用多态吗?
////////////////////////////////////////////// //////////////////////////////////
感谢hkaiser和Chubsdad,它是连接问题。 我在cpp文件中定义了构造函数,但不知何故连接器无法检测到它。我试图将它移动到头文件,它工作,但我不喜欢那样。 这似乎是确定的,如果我在CPP与解决类型定义的功能,如:
LinkedList<int>::LinkedList(void)
:List<int>()
{
mHead = new Node<int>(0);
}
代替:
template<typename Type>
LinkedList<Type>::LinkedList(void)
:List<Type>()
{
mHead = new Node<Type>(0);
}
但有什么区别?为什么它在模板定义中变得不可见,而在解决问题时可见?是否有可能在cpp中定义模板成员函数?由链接产生