玉傢伙... 我有以下類模板類的構造函數
#include <functional>
template <typename TValue, typename TPred = std::less<TValue>>
class BinarySearchTree {
struct TNode {
TValue value;
TNode *pLeft;
TNode *pRight;
};
public:
BinarySearchTree();
~BinarySearchTree();
. . .
private:
TNode *pRoot;
. . .
};
我.cpp文件
然後我像這樣定義的構造函數/析構函數:
template <typename TValue, typename TPred>
BinarySearchTree<TValue, TPred>::BinarySearchTree() : pRoot(0) {}
template <typename TValue, typename TPred>
BinarySearchTree<TValue, TPred>::~BinarySearchTree() {
Flush(pRoot);
}
我的主要功能:
int main() {
BinarySearchTree<int> obj1;
return 0;
}
和我得到以下鏈接錯誤:
public: __thiscall BinarySearchTree<int,struct std::less<int>>::BinarySearchTree<int,struct std::less<int> >(void)
我試圖把構造函數的定義放到頭文件中,我沒有錯誤。只有當我嘗試在cpp文件中定義它。
您的問題的答案是[這裏](http://stackoverflow.com/questions/495021/why-can-templates-only-be-implemented-in-the-header-file) - 抱歉,錯誤的鏈接在近距離投票 –