我有以下 BinaryTree
类,其中包含一个名为 Node
的私有(private)类(我省略了除此问题所需之外的所有内容):
template<typename T>
class BinaryTree{
private:
template<typename NT>
class Node{
public:
Node<NT>* left;
Node<NT>* right;
NT item;
};
public:
Node<T> Find(T itemToFind);
};
这是相当标准的。我正在尝试实现返回 Node 对象的 Node FindMax() 函数,但我无法弄清楚如何定义它。例如,我(错误地)认为这就足够了:
template<typename T>
Node<T> BinaryTree<T>::Find(T itemToFind){ // -------> error line
//...do something....
}
但我收到一条错误消息:没有名为 Node 的模板
。我尝试过各种其他组合但无济于事。我不想返回 bool
如果找到,我想返回 Node
本身。
请您参考如下方法:
您需要添加作用域运算符 ::
,因为 Node
类是 BinaryTree
类的一部分:
template<typename T>
BinaryTree<T>::Node<T> BinaryTree<T>::Find(T itemToFind) {
//...do something....
}
C++14 引入了 auto
返回类型,因此以下内容也将起作用:
template<typename T>
auto BinaryTree<T>::Find(T itemToFind) {
//...do something....
}