gpt4 book ai didi

c++ - (C++) 如何根据条件声明对象类成员

转载 作者:太空宇宙 更新时间:2023-11-04 14:49:16 25 4
gpt4 key购买 nike

我正在开发面向对象的井字游戏,但遇到了问题。我的一个类充当游戏的主 Controller 并控制所有其他对象。下面是该类的精简版本。

最终用户可以在一个或两个播放器之间进行选择。所以,我没有必要同时创建第二个播放器和一个 ai 播放器。游戏只需要其中之一。如下所示,我尝试使用 if 语句来解决问题,但对象没有作用域。

如何根据传递给 Game 构造函数的玩家数量来初始化一个对象或另一个对象?

谢谢!

游戏.h

#include "Player.h"
#include "AIPlayer.h"

class Game
{
private:
Player human;

// I would like to put these here so they have scope
// but it is unecessary to declare them both
// If the user chooses one player then human2 is unecessary
// if the user choosed two player then ai is unecessary
AIPlayer ai;
Player human2;

public:
Game(int players)
{
if (players == 1)
{
AIPlayer ai; // this does not have scope
}
else
{
Player human2; // this does not have scope
}
}
};

最佳答案

我的建议是从公共(public)基类(例如 Player)派生 AIPlayer 和 Player(或者更好的是 HumanPlayer),并在 Game 中有一个指向该基类的指针。然后构造函数实例化 AIPlayer 或 HumanPlayer 并将其分配给指针。

AIPlayer 和 HumanPlayer 之间任何不同的方法都应该在基类 Player 中声明为虚方法,然后在派生类中实现。

关于c++ - (C++) 如何根据条件声明对象类成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20571368/

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