c++ - 用于返回嵌套类类型的范围解析运算符
问题描述
我知道范围解析运算符::
用于识别和消除不同范围中使用的标识符。
在此处提供的示例中,C++ 定义类成员结构并在成员函数中返回它
class UserInformation
{
public:
userInfo getInfo(int userId);
private:
struct userInfo
{
int repu, quesCount, ansCount;
};
userInfo infoStruct;
int date;
};
您可以创建一个返回嵌套类类型的成员函数userInfo
。
UserInformation::UserInfo UserInformation::getInfo(int userId) <-----
{
Userinfo x; <-----
infoStruct.repu = 1000;
return infoStruct;
}
- 为什么必须在函数定义中声明两次作用域?
UserInformation::UserInfo UserInformation::getInfo(int userId)
如果只声明一次是错误的,但据我了解,我认为在开始时声明一次,在返回值之前将我们置于正确的范围内? - 在上面的函数中,我添加
Userinfo x;
以表明可以在没有范围解析运算符的情况下声明和使用嵌套类类型。为什么允许这样做?
解决方案
- 函数返回类型需要类范围,因为名称查找还不知道它。
如果您希望使用 C++11 尾随函数返回类型,则可以绕过该要求。
auto UserInformation::getInfo(int userId) -> UserInfo
{ ... }
- 成员函数体内不需要类作用域,因为在那里类作用域显然是已知的。
推荐阅读
- c - c中的函数引用外部分配的内存
- vmware - 还原 VMware Horizon 连接服务器后代理无法访问
- unit-testing - 测试随机函数的最佳方法
- excel - 对范围地址进行数字排序
- python - 如何能够将列的值与 DataFrame 中其他列的名称连接起来
- css - 如何获得 2 x 1 UI 对齐
- akka - 对部分 akka 流的显式吞吐量限制
- python-3.x - 覆盖 Google App Engine 项目中的包库
- reactjs - 每次路由更改和页面重新加载时都会调用 Auth0 React JS 令牌端点
- javascript - 如何删除其他 chrome 扩展的权限?