C++ 模板类构造函数
好的,伙计们。。。 我有以下课程C++ 模板类构造函数,c++,class,templates,C++,Class,Templates,好的,伙计们。。。 我有以下课程 #include <functional> template <typename TValue, typename TPred = std::less<TValue>> class BinarySearchTree { struct TNode { TValue value; TNode *pLeft; TNode *pRight; }; public:
#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;
. . .
};
#包括
模板
类二进制搜索树{
结构节点{
t价值;
TNode*pLeft;
TNode*pRight;
};
公众:
二进制搜索树();
~BinarySearchTree();
. . .
私人:
TNode*pRoot;
. . .
};
然后在我的.cpp文件中,我定义了ctor/dtor,如下所示:
template <typename TValue, typename TPred>
BinarySearchTree<TValue, TPred>::BinarySearchTree() : pRoot(0) {}
template <typename TValue, typename TPred>
BinarySearchTree<TValue, TPred>::~BinarySearchTree() {
Flush(pRoot);
}
模板
BinarySearchTree::BinarySearchTree():pRoot(0){}
模板
BinarySearchTree::~BinarySearchTree(){
冲洗(pRoot);
}
我的主要职能是:
int main() {
BinarySearchTree<int> obj1;
return 0;
}
int main(){
二元搜索树obj1;
返回0;
}
我得到以下链接错误:
public: __thiscall BinarySearchTree<int,struct std::less<int>>::BinarySearchTree<int,struct std::less<int> >(void)
public:\uu thiscall BinarySearchTree::BinarySearchTree(void)
我尝试将构造函数定义放入头文件,但没有得到任何错误。仅当我尝试在cpp文件中定义它时。最后请留下空间并尝试。 它可能被视为左移操作员
template <typename TValue, typename TPred = std::less<TValue> >
模板
不要在cpp文件中定义模板,而是将函数的实现放在头文件中,保持主函数不变。默认情况下,模板是内联的。因此,它们对链接器不可见。并且包含main()的文件无法查看模板的定义。因此出现了错误你的问题的答案是:对不起,关闭的错误链接在C++ 11中不允许在<>代码> >代码>之间添加空间。我希望这在所有C++教程网站上更为明显。