在C ++中返回成员类

时间:2017-01-11 01:15:47

标签: c++ types

在以下示例中:

class A
{
public:
    class B
    {
        ...
    }
    B Method(B argument);
}

A::B A::Method(B argument);

为什么返回类型需要范围,而不是参数类型?

1 个答案:

答案 0 :(得分:8)

根据[basic.lookup.qual] / 3,

  

declarator-id qualified-id 的声明中,声明 qualified-id 之前使用的名称   在定义的命名空间范围中查找;在范围内查找 qualified-id 后面的名称   成员的类或命名空间。

返回类型在声明 qualified-id 之前(即A::Method),而参数类型在它之后,因此参数类型的名称是自动的在A的范围内查找,而返回类型的名称则没有。我们可以使用尾随返回类型来避免额外的限定。

auto A::Method(B argument) -> B;