请告诉我,这个方法的声明/描述中有什么错误?
class Set
{
struct Node {
// ...
};
// ...
Node* &_getLink(const Node *const&, int) const;
// ...
};
Node* &Set::_getLink(const Node *const &root, int t) const
{
// ...
}
我没有看到错误,但编译器(MS VS C ++)发出了许多语法错误。
答案 0 :(得分:3)
您忘记完全限定Node
的名称(在Set
范围内定义):
Set::Node* &Set::_getLink(const Node *const &root, int t) const
// ^^^^^
如果没有完全限定,编译器将查找名为Node
的全局类型,该类型不存在。
答案 1 :(得分:0)
问题是范围问题。您需要在Node
加上前缀:
Set::Node* &Set::_getLink(const Node *const &root, int t) const
{
// ...
}
实际上,Node
在遇到它时是未知的(您处于命名空间范围,而不是Set
范围内)。您也可以使用auto
:
auto Set::_getLink(const Node *const &root, int t) const -> Node *&
{
// ...
}
在->
之后,您处于Set
的范围,Node
已知。
答案 2 :(得分:0)
您没有在全局范围
//by Set::Node we give compiler that this function exist in class Node
Set::Node* &Set::_getLink(const Node *const &root, int t) const
{
// ...
}