-1

假设我们给这个类一个内部结构。

class Some {
   public:
    struct Crap{};
    Crap Process(Crap& c);
}


Some::Crap Some::Process(Crap& crap) {   Crap moreCrap = ..  }

对我来说,“Process”中的返回类型 (Some::Crap) 是有范围的。

对我来说,“流程”主体内不需要范围界定是有道理的。

我不明白为什么 Process (Crap& crap) 的内部结构参数不需要范围。

有人对此有任何见解吗?谢谢

4

3 回答 3

3

事实上,参数类型确实需要限定(除非您的示例不正确并且您打算Process成为 的成员函数Some)。

于 2010-11-01T17:52:00.157 回答
2

假设以下代码段:

class Some
{
public:
    struct Crap{};
    Crap Process(Crap&);
};

Some::Crap Some::Process(Crap& crap) { ... }

基本上,Crap不需要在函数参数列表和主体内进行范围界定,原因与您不需要this->访问数据成员和成员函数的原因相同:它是隐式的,因为它处于相同的范围内。

需要返回类型的原因仅仅是因为解析器在方法名称之前遇到返回类型并且不能(不需要?)在那个时刻推断范围。

于 2010-11-01T18:09:09.147 回答
0

问题标题为“成员函数”,但您的示例不包含成员函数。假设您的意思Some::Process不仅仅是Process

成员函数定义的类范围从 开始(,而不是从{. 我认为推理正是这样的,这样的东西可以输入更短。

于 2010-11-01T17:51:48.093 回答