首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当返回为值时,为什么结构在类内定义所需的范围解析?

当返回为值时,为什么结构在类内定义所需的范围解析?
EN

Stack Overflow用户
提问于 2013-06-06 05:02:02
回答 1查看 1.8K关注 0票数 7

我有一个单链列表实现,如下所示:

报头

代码语言:javascript
复制
class SinglyLinkedList
{
  struct Node
  {
    Node * _pNext;
    int    _data;
  };

public:

  Node * SomeFun(Node * ip1, Node * ip2);  
  // Some more methods here
};

现在,当实现这个类的一个方法时

CPP

代码语言:javascript
复制
Node * SinglyLinkedList::SomeFun(Node * ip1, Node * ip2)
{
  //Some code and return
}

我不理解的奇怪行为是,编译时,编译器拒绝识别返回类型中的"Node“类型,除非我将它指定为SinglyLinkedList::Node.。但是函数参数的相同类型在没有显式指定的情况下是可以识别的。理想情况下,我觉得在这两种情况下都不应该需要这种显式的指定,因为Node是在同一个类中定义的。有人能对这件事发火吗?

EN

回答 1

Stack Overflow用户

发布于 2013-06-06 07:46:36

除了永久的答案之外,这个问题在C++11中使用尾部返回子句来解决。

代码语言:javascript
复制
// Regular return style
SinglyLinkedList::Node* SinglyLinkedList::SomeFun(Node * ip1, Node * ip2) { ... }

// Trailing return style
auto SinglyLinkedList::SomeFun(Node * ip1, Node * ip2) -> Node * { ... }

在常规样式中,您尚未输入类范围(它只在方法的限定名结束后才开始)。

然而,在尾部返回样式中,返回类型在类范围内(就像参数一样),因此没有必要进行限定。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16953990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档