我的目标是一个类,如:C++定义类的成员结构和成员函数返回它
class UserInformation
{
public:
userInfo getInfo(int userId);
private:
struct userInfo
{
int repu, quesCount, ansCount;
};
userInfo infoStruct;
int date;
};
userInfo UserInformation::getInfo(int userId)
{
infoStruct.repu = 1000;
return infoStruct;
}
但是编译器会发出错误的是,在公共职能getInfo(int)
的确定指标的返回类型userInfo
不是一个类型名称。
为什么我们需要userInfo的限定符UserInfomation。默认情况下编译器不应该在UserInformation的名字范围中检查吗? – anaken78 2016-12-12 23:54:44
@ anaken78你,我或任何其他人认为符合的编译器_应该做的事是无关紧要的。这是**做的**。在函数的参数列表打开之前,该类不在范围内,因此不能查找那里的名称不合格。我敢肯定,在解析&whatnot方面,背后的理由已经在其他地方详细讨论过了,如果你想搜索它的话。或者只是使用尾随返回类型:'auto UserInformation :: getInfo(int userId) - > userInfo'(顺便说一句,这些都是一些错误的命名选择)。当在该位置声明返回类型时,该类及其成员处于范围内。 – 2017-05-26 17:59:13