找不到默认构造函数来初始化cpp中的成员

时间:2014-04-04 02:29:08

标签: c++ constructor

请帮我解决这个问题。我试图解决这个问题两个小时。 这是我的代码。

class deviceC {

private:
    deviceA devA;
    deviceB devB;
    wayPoint destination,current;

public: 
    deviceC(wayPoint destination1){
        destination=destination1;
        devA=deviceA();
        devB=deviceB();
    }
};

这是错误:

  

找不到默认构造函数来初始化成员   ' deviceC ::目的地'在函数deviseC :: destination(wayPoint)

2 个答案:

答案 0 :(得分:3)

您需要在构造函数中使用初始化列表,因为类型为destination的成员currentwayPoint没有默认构造函数。

class deviceC {
public: 
    deviceC(wayPoint destination1) : destination(destination1) {
        devA=deviceA();
        devB=deviceB();
    }
};

和IMO一样,你不需要在构造函数中使用默认构造函数初始化devAdevB,只需在调用默认构造函数后调用operator=。这是我的建议:

class deviceC {
private:
    deviceA devA;
    deviceB devB;
    wayPoint destination, current;
public: 
    deviceC(const wayPoint& destination1, const wayPoint& current1) : destination(destination1), current(current1) {}
};

答案 1 :(得分:1)

错过了一个支架。

class deviceC{

    private : deviceA devA;
                  deviceB devB;
                  wayPoint destination,current;

    public: deviceC(wayPoint destination1){
            destination=destination1;
            devA=deviceA();
            devB=deviceB();
    } // <-- here
};