const引用必须在构造函数base/member初始化列表中初始化

Tre*_*com 9 c++ constructor initialization reference

我试图阻止访问我正在编写的类的默认构造函数.我希望其他人使用的构造函数需要对另一个对象的const引用.我已将默认构造函数设为私有,以防止其他人使用它.我收到默认构造函数的编译器错误,因为const引用成员变量未正确初始化.我该怎么做才能编译?

class CFoo
{
public:
    CFoo();
    ~CFoo();
};

class CBar
{
public:
    CBar(const CFoo& foo) : fooReference(foo)
    {
    }

    ~CBar();

private:
    const CFoo& fooReference;

    CBar() // I am getting a compiler error because I don't know what to do with fooReference here...
    {
    }
};
Run Code Online (Sandbox Code Playgroud)

Any*_*orn 13

不要声明默认构造函数.如果你声明自己的构造函数,它无论如何都不可用(自动它是).

class CBar
{
public:
    CBar(const CFoo& foo) : fooReference(foo)
    {
    }
private:
    const CFoo& fooReference;
};
Run Code Online (Sandbox Code Playgroud)

有关构造函数的相当全面的解释可以在这里找到:http: //www.parashift.com/c++-faq-lite/ctors.html

  • @Trevor如果您没有在类定义中明确声明构造函数(任何类型),它会这样做. (2认同)
  • @Trevor您可能还需要阻止复制构造函数. (2认同)