我有一个单链列表实现,如下所示:
报头
class SinglyLinkedList
{
struct Node
{
Node * _pNext;
int _data;
};
public:
Node * SomeFun(Node * ip1, Node * ip2);
// Some more methods here
};现在,当实现这个类的一个方法时
CPP
Node * SinglyLinkedList::SomeFun(Node * ip1, Node * ip2)
{
//Some code and return
}我不理解的奇怪行为是,编译时,编译器拒绝识别返回类型中的"Node“类型,除非我将它指定为SinglyLinkedList::Node.。但是函数参数的相同类型在没有显式指定的情况下是可以识别的。理想情况下,我觉得在这两种情况下都不应该需要这种显式的指定,因为Node是在同一个类中定义的。有人能对这件事发火吗?
发布于 2013-06-06 07:46:36
除了永久的答案之外,这个问题在C++11中使用尾部返回子句来解决。
// Regular return style
SinglyLinkedList::Node* SinglyLinkedList::SomeFun(Node * ip1, Node * ip2) { ... }
// Trailing return style
auto SinglyLinkedList::SomeFun(Node * ip1, Node * ip2) -> Node * { ... }在常规样式中,您尚未输入类范围(它只在方法的限定名结束后才开始)。
然而,在尾部返回样式中,返回类型在类范围内(就像参数一样),因此没有必要进行限定。
https://stackoverflow.com/questions/16953990
复制相似问题