请帮我解决这个问题。我试图解决这个问题两个小时。 这是我的代码。
class deviceC {
private:
deviceA devA;
deviceB devB;
wayPoint destination,current;
public:
deviceC(wayPoint destination1){
destination=destination1;
devA=deviceA();
devB=deviceB();
}
};
这是错误:
找不到默认构造函数来初始化成员 ' deviceC ::目的地'在函数deviseC :: destination(wayPoint)
答案 0 :(得分:3)
您需要在构造函数中使用初始化列表,因为类型为destination
的成员current
和wayPoint
没有默认构造函数。
class deviceC {
public:
deviceC(wayPoint destination1) : destination(destination1) {
devA=deviceA();
devB=deviceB();
}
};
和IMO一样,你不需要在构造函数中使用默认构造函数初始化devA
和devB
,只需在调用默认构造函数后调用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
};