我正在使用一个扑克引擎,以便不同的PokerPlayer代理可以在锦标赛模拟中相互对抗。项目完成后,我希望人们在PR中提交自己的代理。为此,他们只需要使用MyPokerPlayer类派生PokerPlayer类并重写play()方法。但是我想确保他们的经纪人不会作弊。我不希望他们能够改变他们拥有的钱,也不希望他们能够改变游戏开始时得到的卡。
问题是Game类在下注时需要能够获得PokerPlayer的钱(或在获胜时给他们底池),并且需要能够设置卡。因此,PokerPlayer的派生类无法直接更新自己的金钱和纸牌,而外部类Game可以。
我该如何实现?谢谢您的时间,
class Game;
class PokerPlayer {
friend class Game;
private:
int money;
public:
int getMoney() const;
};