Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
725 views
in Technique[技术] by (71.8m points)

c++ - cannot find default constructor to initialize member in cpp

Please help me with this. I was trying to fix this for two hours. This is my code.

class deviceC {

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

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

This is the error:

cannot find default constructor to initialize member 'deviceC::destination' in function deviseC::destination(wayPoint)

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You need an initializer list in your constructor, because member destination and current with type wayPoint does not has a default constructor.

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

And IMO, you don't need init the devA and devB inside the constructor just with the default constructor, they just call the operator= after their default constructor called. Here's my suggestion:

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...