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中定義模板成員函數?由鏈接產生