gpt4 book ai didi

c++ - 具有对象作为属性的类的错误c++

转载 作者:搜寻专家 更新时间:2023-10-30 23:56:45 25 4
gpt4 key购买 nike

大家好,我在用 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;
}

我得到的错误是这个。

“Position”类不存在任何默认构造函数

我能做些什么来解决这个问题?
还有,为类创建对象属性的正确形式是什么?

最佳答案

数据成员和基类的构造是使用成员初始化列表完成的。如果类类型的数据成员或基类没有使用初始化列表初始化,那么它是默认构造的。由于您的类没有默认构造函数,因此会出现错误。

在构造函数内部,this->position = position 是一个赋值,而不是构造函数调用。 position 在您到达此行之前是默认构造的。您需要将其替换为:

SpaceShip(Position position)
: position(position)
{ }

这使用成员初始化列表来调用复制构造函数 Position::Position(Position const&)

关于c++ - 具有对象作为属性的类的错误c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27219534/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com