【发布时间】:2014-02-17 02:20:34
【问题描述】:
我正在研究二叉搜索树类并实现查找操作。公共函数有两个版本,一个返回一个 const Node* 并且是 const,另一个返回一个非 const Node* 并且它本身不是 const。以下是公共定义:
const Node *Find(const T &t) const { Find(t, m_root); }
Node *Find(const T &t) { Find(t, m_root); }
下面是私有 Find 方法的定义:
template <typename T>
const Node* CTree<T>::Find(const T &t, Node *root) const {
if (root == 0)
return Node();
else if (t < root->m_number)
Find(t, root->m_ll);
else if (t > root->m_number)
Find(t, root->m_rl);
else
return this;
}
Visual Studio 告诉我“'Find' : member function not declared in 'CTree'”。为什么会这样说?
编辑以添加错误消息的细节:
从const Node*...开始的私有方法定义行有5条消息
Missing type specifier - int assumed
Syntax error : missing ';' before '*'
'T' : undeclared identifier
'CTree' : 'T' is not a valid template type argument for parameter 'T'
syntax error : missing ',' before '&'
然后定义的右大括号又出现一个错误(我认为这是导致其他 5 个错误的原因):
'Find' : member function not declared in 'CTree'
请注意,Visual Studio 没有像其他地方那样在 Find 的定义中突出显示 Node。
这是整个班级:http://pastebin.com/JEEZJD4n
【问题讨论】:
-
您没有发布任何可以帮助您的信息。发送整个错误消息,它发生的行。是你们全班吗?
-
我编辑了我的问题以包含错误信息。不,这不是全班,但我相信它应该足以帮助我解决问题。
-
可能有一些语法错误。我无法弄清楚是什么导致了问题。我至少需要方法和属性的完整类定义。应该编译的东西。
-
好的,我放了一个全班的 pastebin 链接。
-
@spartanhooah JEEZ!你的 pastebin 网址太棒了! =)
标签: c++ templates binary-tree