为什么setVal的返回类型是string类型,参数类型是double类型
typedef string Type;
Type initVal();
class Exercise {
public:
typedef double Type;
Type setVal(Type);
Type initVal();
private:
int val;
};
Type Exercise::setVal(Type parm) {
val = parm + initVal();
return val;
}
当在命名空间作用域中定义成员函数时,C++ 为非限定名称提供特殊的名称查找规则,follow函数的声明符 ID(3.4.1/8)。此类名称先在类范围中查找,然后再在命名空间范围中查找。
由于“普通”成员函数定义中的返回类型precedes功能声明符 ID,则不适用前述特殊规则。它是按照“通常”规则查找的:在命名空间范围内。
因此,您的函数定义的返回类型指的是::Type
,不Exercise::Type
。它与类内所做的任何声明都不匹配。该代码格式不正确。
如果您还希望在类作用域中查找非限定返回类型名称,请使用新的尾随返回类型函数声明中的语法,因为在此语法中返回类型follows功能声明符 ID
auto Exercise::setVal(Type parm) -> Type {
val = parm + initVal();
return val;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)