【问题标题】:Initializing class object inside the other class constructor在另一个类构造函数中初始化类对象
【发布时间】:2016-11-06 11:36:09
【问题描述】:

我有一个类,它命名为 A 并且 A 类在其私有中有 3 个另外的类。

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
}

但是当我编写一些编译器对我说的东西时,我无法为默认和第一个参数构造编写代码:

错误:‘class A&’中未初始化的引用成员 [-fpermissive] A::A(){

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

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

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

【问题讨论】:

  • 我仍然找不到任何解决方案。

标签: c++ c++11


【解决方案1】:

A 类包含对其他对象的引用。与指针不同,引用不能为空。要完成这项工作,您需要:

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

【讨论】:

    猜你喜欢
    • 2016-01-08
    • 1970-01-01
    • 2021-11-06
    • 2013-06-04
    • 2023-02-02
    • 1970-01-01
    • 2013-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多