【问题标题】:Using class objects in another class在另一个类中使用类对象
【发布时间】:2019-01-29 23:13:15
【问题描述】:

我目前正在尝试使用 OOP 创建一个简单的游戏。现在,我正在尝试让游戏中的两名玩家各自下注以获胜。

这是我的 player.cpp 目前的样子 -

Player::Player() : score(0), wallet(1000) { }

void Player::setWager() {
    std::cout << "Please enter your wager." << std::endl;
    std::cin >> wager;
    wallet -= wager;
}

int Player::getWallet() {
    return wallet;
}

int Player::getWager() {
    return wager;
}

为此,int 赌注、int wallet 和int score 存储在 player.h/player.cpp 中。

在 main 中,我使用玩家构造函数,然后像这样创建赌注 -

int main() {
    Player p1;
    Player p2;
    p1.setWager();
    p2.setWager();
}

现在,我还有一个用于玩游戏的桌子的 .h/.cpp 文件。我希望能够接受为 p1 和 p2 形成的赌注,并将它们存储到 table.cpp 中名为 winWager 的 int 中,例如(在伪代码中)-

void Table::setWinWager() {
    winWager = p1.wager + p2.wager;
}

当然,int winWager 保存在 table.h 中。如何从 main(或玩家?)中的 p1 和 p2 下注,并让它们用于 table.cpp?我是 OOP 的新手,所以这很令人困惑。我正在使用 C++。感谢您的帮助。

【问题讨论】:

  • 那是你给getWager()打的电话,我看不出这里有问题。
  • @MatthieuBrucher getWager() 仅产生每个玩家对象的单一投注。我试图从每个玩家对象中获取单个赌注,然后将它们放入 table.cpp 中的一个整数,这是两个玩家赌注的总和。
  • winWager = p1.getWager() + p2.getWager(); 但是你有什么问题?使用包含标头?
  • @MatthieuBrucher 它说当我尝试编译时它没有在范围内声明,我正在添加“player.h”。
  • 然后通过引用传递它们(将它们设为 const,并使 getter 也设为 const)。

标签: c++ function class


【解决方案1】:

我猜你基本上有两个选择

您可以将玩家作为参数传递给您的 setWinWager 方法

void Table::setWinWager(const Player& p1, const Player& p2) {
    winWager = p1.wager + p2.wager;
}

或者你可以让你的 Table 对象有两个玩家作为成员,大概是通过它的构造函数传入的。

class Table
{
public:
    Table(const Player& p1, const Player& p2); 
    void setWinWager();
private:
    Player p1;
    Player p2;
    int winwager;
};

哪个是正确的?这取决于您的 Table 对象代表什么,这实际上是您可以回答的问题。

【讨论】:

    猜你喜欢
    • 2017-08-16
    • 1970-01-01
    • 2013-02-17
    • 1970-01-01
    • 1970-01-01
    • 2018-10-16
    • 2022-01-16
    • 2014-07-23
    相关资源
    最近更新 更多