初始化初始化列表中的对象

时间:2015-09-15 19:43:04

标签: c++

我有一个class Foo我需要初始化对另一个类的引用,但首先我需要从另一个类中获取一些引用接口。

这只是一个虚拟代码,可以更好地解释我的两个问题

class Foo
{
public:
  Foo();
  ~Foo();
private:
  int m_number;
  OtherClass& m_foo;
};

Foo::Foo() :
  m_number(10)
{
  // I really need to do this get's
  Class1& c1 = Singleton::getC1();
  Class2& c2 = c1.getC2();
  Class3& c3 = c2.getC3();

  //How can I put the m_foo initialization in the initialization list?
  m_foo(c3);
}

问题是:

1 - 在初始化我的成员m_foo之前,我需要检索上面的所有这些引用。但我想在初始化列表中初始化m_foo。如果没有一条线,那么最好的方法是什么。 有什么办法吗?

2 - 通过执行上述代码,我收到错误:

error: uninitialized reference member 'OtherClass::m_foo' [-fpermissive]

因为我正在使用括号初始化,因为它将在初始化列表中完成。如何正确初始化m_foo

1 个答案:

答案 0 :(得分:8)

您可以使用委托构造函数(自C ++ 11起):

WHERE ACTIVE_FLAG = 1 AND
      ((@param < '1/1/2015' AND COLUMN_1 = 'Warehouse') OR
       (@param >= '1/1/2015' AND COLUMN_1 = 'Warehouse, CA')
      );