引用成员的初始化需要一个临时变量

新手上路,请多包涵
struct Div
{
   int i;
   int j;
};

class A
{
public:
    A();
    Div& divs;
};

在我的构造函数定义中,我有以下实现

A::A(): divs(NULL)
{}

我收到以下错误:

Error72 错误 C2354: ‘A::divs’ : 引用成员的初始化需要一个临时变量

原文由 aajkaltak 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 453
2 个回答

必须初始化引用以引用某物;它不能引用任何内容,因此您不能默认构造一个包含一个类的类(除非像其他人建议的那样,您定义了一个全局“null”值)。您将需要一个给出 Div 的构造函数来引用:

 explicit A(Div &d) : divs(d) {}

如果您希望它能够为“null”,那么您需要一个指针,而不是引用。

原文由 Mike Seymour 发布,翻译遵循 CC BY-SA 2.5 许可协议

class A
{
    Div & ref(Div div) { return div; }
    public:
       A() : divs(ref(Div())) {};
       Div& divs;
};

原文由 konstantin314 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题