在另一个类构造函数

时间:2016-11-06 11:36:09

标签: c++ c++11

我有一个类,它命名为A,A类在其私有中有另外三个类。

class A{
    public:
          A();
          A(int num);
          A(C& mC, P& mP, M& mM, int num);
    //there is a getter and setter for all member this only one example(please check are they right?)
          M getM()const{return pM;} 
          void setM(M classM){ pM = classM ;}
        private:
            C& pC;
            P& pP;
            M& pM;
            int digit= 0;
        };

我在参数构造中这样做:

A::A(C& mC, P& mP, M& mM, int num):pC(mc),pP(mP),pM(mM)
{
// doing someting here
}

但是当我写一些编译器对我说:

时,我无法编写默认代码和第一个参数结构。
  

错误:'A&'中未初始化的参考成员'[-fpermissive]   A :: A(){

  

注意:'A&应该初始化A :: pP'        A和的pP;

像这样,有几个错误和注释。

我该怎么办?如何在默认和第一个参数结构中初始化类?

1 个答案:

答案 0 :(得分:1)

A包含引用到其他对象。与指针不同,引用不能为null。要使这项工作,您需要:

  • 使用指针代替引用,并将它们初始化为nullptr,构造函数中没有提供有效对象
  • 按值存储的成员。这涉及原始参数的副本,语义不同 - 可能不是您需要的。