c++ - 为一个对象做一个 setter/getter ?

标签 c++

我的游戏类由一艘宇宙飞船组成。 我将 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/

相关文章:

c++ - 从 void 函数返回有性能优缺点吗

c++ - C 和 C++ 中静态变量存储在哪里?

c++ - 在c++中为什么我们可以重载 `operator ->`而不能重载 `operator .`

c++ - 使用 MFC CDC 绘制文本

c++ - 返回非常量引用会导致绑定(bind)引用错误

c++ - 使复制的成员引用变量引用拷贝的成员而不是原始成员

c++ - 模板元编程与经典名称重载相结合

C++根据运行时值选择要使用的虚拟基类的实现

c++ - 您应该通过命令行使用 curl 还是包含库?

c++ - Flatbuffers 验证器行为