我的BST课程与this thread
相同BST.hpp
template<class T>
class BinarySearchTree
{
private:
struct tree_node
{
tree_node* left;
tree_node* right;
T data;
tree_node( const T & thedata, tree_node * l = NULL, tree_node * r = NULL )
: data( thedata ), left( l ), right( r ) { }
};
tree_node* root;
public:
//some functions
private:
struct tree_node* minFunc( tree_node** node);
};
我试图从this thread完成函数返回指针。
minFunc的定义在同一个BST.hpp文件中
template <class T>
struct tree_node* BST<T>::minFunc(tree_node** node)
{
tree_node* current = *node;
while(current->left != NULL)
{
current = current->left;
}
return current;
}
无法找出编译错误:
错误C2143:语法错误:缺少';'在'*'之前
错误C2065:'T':未声明的标识符
错误C2955:'BST':使用类模板requ i res模板参数列表
错误C2509:'minFunc':未在'BST'中声明成员函数
所有这些指向定义
答案 0 :(得分:2)
我最好的猜测是struct tree_node
不可见。它可能没有在某个类中声明/声明。
答案 1 :(得分:1)
更改此声明:
struct tree_node * minFunc(tree_node ** node);
进入这个
tree_node* minFunc( tree_node** node);
相应地更改它的定义。
修改强>
定义应该是
template <class T>
typename BST<T>::tree_node* BST<T>::minFunc(tree_node** node)
{
tree_node* current = *node;
while(current->left != NULL)
{
current = current->left;
}
return current;
}
顺便说一句,请注意minFunc方法是私有的,并且无法在类之外访问它
答案 2 :(得分:0)
treenode是BST中的私有结构 - 您无法在BST之外访问它