gpt4 book ai didi

c++ - 具有二叉搜索树的类函数中的模板语法

转载 作者:行者123 更新时间:2023-11-30 01:50:22 25 4
gpt4 key购买 nike

<分区>

所以我试图将我之前创建的基于 int 的二叉搜索树转换为模板二叉搜索树。我正在为如何输入我的 .cpp 文件而苦恼。

在我的 .h 文件中我有:

template <typename T>
class BST
{
private:
struct node
{
T m_data;
node* m_left;
node* m_right;
};

node* m_root;
void AddLeafPrivate(const T& x, node* Ptr);
void PrintInOrderPrivate(node* Ptr);
node* ReturnNodePrivate(const T& x, node* Ptr);
T FindSmallestPrivate(node* Ptr);
void RemoveNodePrivate(const T& x, node* parent);
void RemoveRootMatch();
void RemoveMatch(node* parent, node* match, bool left);
node* CreateLeaf(const T& x);
node* ReturnNode(const T& x);
void RemoveSubtree(node* Ptr);
public:
BST();
~BST();
void AddLeaf(const T& x);
void PrintInOrder();
T ReturnRootKey();
void PrintChildren(const T& x);
T FindSmallest();
void RemoveNode(const T& x);
};

在我的 .cpp 文件中,我遇到以下函数的错误:

template <typename T>
template BST<T> :: node* BST<T>::ReturnNode(const T& x)
{
return ReturnNodePrivate(x, m_root);
}

template <typename T>
template BST<T> :: node* BST<T> :: ReturnNodePrivate(const T& x, node* Ptr)
{
if(Ptr != NULL)
{
if (Ptr -> m_data == x)
{
return Ptr;
}
else
{
if (x < Ptr -> m_data)
{
return ReturnNodePrivate(x, Ptr -> m_left);
}
else
{
return ReturnNodePrivate(x, Ptr -> m_right);
}
}
}
else
{
return NULL;
}
}

我对每个函数都遇到了相同的 4 个错误,我很困惑自己做错了什么。

  • error: expected '<' before 'BST' for template BST<T>
  • error: 'T' was not declared in this scope
  • error: template argument 1 is invalid
  • error: expected initializer before '*' token

对我做错了什么有什么建议吗?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com