我的游戏类由一艘宇宙飞船组成。 我将 Spaceship 对象设为私有(private),并为此对象执行了 getter。
Spaceship Game::getSpaceShip() const
{
return mySpaceship;
}
当我通过 main 中的 getter 使用我的宇宙飞船对象时,它无法正常工作。如果我将其公开并仅按其名称使用它,它就可以工作。您知道是什么导致了这个问题吗?
最佳答案
您正在返回 mySpaceship 拷贝。尝试返回指向 mySpaceship 对象的指针。
Spaceship *Game::getSpaceShip()
{
return &mySpaceship;
}
或引用:
const Spaceship& Game::getSpaceShip() const
{
return mySpaceship;
}
这不是 Java。在 C++ 中,您是按值传递和返回变量!除非你表明你想以不同的方式来做(通过指针或引用)。
如果您需要修改返回的引用。
Spaceship& Game::getSpaceShip()
{
return mySpaceship;
}
关于c++ - 为一个对象做一个 setter/getter ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15604127/