C++ 模板类的非成员函数模板 模板 B类树 { 私人: T数据; b树*对; b树*左; 公众: b树(); BTree(T); ~b树(); 无效设置数据(T); T GetData(); 无效设定权(BTree*); BTree*GetRight(); void SetLeft(b树*); BTree*GetLeft(); };
这是声明非成员函数模板的方法吗?我对这些定义有严重的怀疑C++ 模板类的非成员函数模板 模板 B类树 { 私人: T数据; b树*对; b树*左; 公众: b树(); BTree(T); ~b树(); 无效设置数据(T); T GetData(); 无效设定权(BTree*); BTree*GetRight(); void SetLeft(b树*); BTree*GetLeft(); };,c++,C++,这是声明非成员函数模板的方法吗?我对这些定义有严重的怀疑 template <class T> class BTree { private: T Data; BTree* Right; BTree* Left; public: BTree(); BTree(T); ~BTree(); void SetData(T);
template <class T>
class BTree
{
private:
T Data;
BTree* Right;
BTree* Left;
public:
BTree();
BTree(T);
~BTree();
void SetData(T);
T GetData();
void SetRight(BTree*);
BTree* GetRight();
void SetLeft(BTree*);
BTree* GetLeft();
};
模板
BTree*NewNode();
模板
BTree*NewNode(T);
下面这个不行!!给我一个错误
template <class T>
BTree<T>* NewNode();
template <class T>
BTree<T>* NewNode(T);
模板
BTree*NewNode()
{
BTree*Node=新的BTree;
返回节点;
}
模板
//模板
BTree*NewNode(T Num)
{
BTree*Node=新的BTree(Num);
返回节点;
}
int main()
{
BTree*Root=NULL;
Root=NewNode(1);//表示未定义的引用。
Root->SetLeft(NewNode(2));
Root->SetRight(NewNode(3));
返回0;
}
错误如下所示:
template <class T>
BTree<T>* NewNode()
{
BTree<T>* Node=new BTree<T>;
return Node;
}
template <class T=int>
//template <class BTree>
BTree<T>* NewNode(T Num)
{
BTree<T>* Node=new BTree<T>(Num);
return Node;
}
int main()
{
BTree<int>* Root=NULL;
Root=NewNode(1); //it says undefined reference.
Root->SetLeft(NewNode(2));
Root->SetRight(NewNode(3));
return 0;
}
1.BTree*NewNode(int)的未定义引用
2.对“BTree::SetLeft(BTree*)”的未定义引用
3.对“BTree::SetRight(BTree*)”的未定义引用
一旦我提供了所使用的BTree
方法的定义。可能的重复是链接器错误,而不是编译器错误。请参阅n.m.的链接,了解原因和如何修复它。您的声明很好。谢谢您的回复。一旦我定义了头文件中的所有内容,它就工作了。
1.undefined reference to `BTree<int>* NewNode<int>(int)'
2.undefined reference to `BTree<int>::SetLeft(BTree<int>*)'
3.undefined reference to `BTree<int>::SetRight(BTree<int>*)'