c++ - 如何声明包含对外部类的引用的成员变量?

标签 c++

我有如下代码:

class outer {
public:
  class inner {
    outer & o;
  public:
    inner(outer & o): o(o) {}
  };

  inner i(*this);
};

但这给了我错误的说法:

error: expect specifier before token '*'

我该怎么做?我必须使用指针吗?

最佳答案

1) 在outer的构造函数的初始化列表中初始化i

inner i;

outer(): i(*this) {}

2)(仅限 C++11)为 i 使用大括号初始化器。在这种情况下,您必须使用大括号,而不是圆括号。

inner i{*this};

关于c++ - 如何声明包含对外部类的引用的成员变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22106371/

相关文章:

c++ - 反向迭代器算法

c++ - 在 C++11 中,如何获取没有名称的临时左值?

c++ 使用 recvmmsg 丢弃 udp 数据包

c++ - 为什么 range::iota_view 的构造函数不将参数移动到成员变量?

Java/C/C++/C#/PHP 到 Pascal 转换器?

c# - 创建系统性能 Windows 10 应用程序(用于商店)

c++ - QT ui 指针中缺少属性和方法

c++ - istream::operator>>(int&) 似乎对空格表现得很奇怪

c++ - Windows UTF8 到 UTF16

c++ - 有没有办法在 vector 常数时间的中间插入一些东西