Eri*_*nez 2 c++ visual-studio-2012
大家好,我在使用c ++时遇到错误.
class Position {
private:
int posX;
int posY;
public:
Position(int posX, int posY) {
this->posX = posX;
this->posY = posY;
}
int getPosX() {
return posX;
}
int getPosY() {
return posY;
}
};
class SpaceShip {
private:
Position position;
public:
SpaceShip(Position position) {
this->position = position;
}
};
int main() {
Position position(10, 10);
SpaceShip spaceShip(position);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我得到的错误就是这个.
不存在任何默认构造函数for clase"Position"
我能做些什么来解决这个问题?
而且,为类创建对象属性的正确形式是什么?
使用member initializer-list完成数据成员和基类的构造.如果尚未使用initializer-list初始化类类型的数据成员或基类,则默认构造它.由于您的类没有默认构造函数,因此您会收到错误.
在构造函数中,this->position = position
是一个赋值,而不是构造函数调用.position
在你到达这一行之前是默认构造的.您需要将其替换为:
SpaceShip(Position position)
: position(position)
{ }
Run Code Online (Sandbox Code Playgroud)
这使用成员初始化列表来调用复制构造函数Position::Position(Position const&)
.
归档时间: |
|
查看次数: |
35 次 |
最近记录: |