C ++派生类无法修改基类的属性,但外部类可以

问题描述 投票:-3回答:1

我正在使用一个扑克引擎,以便不同的PokerPlayer代理可以在锦标赛模拟中相互对抗。项目完成后,我希望人们在PR中提交自己的代理。为此,他们只需要使用MyPokerPlayer类派生PokerPlayer类并重写play()方法。但是我想确保他们的经纪人不会作弊。我不希望他们能够改变他们拥有的钱,也不希望他们能够改变游戏开始时得到的卡。

问题是Game类在下注时需要能够获得PokerPlayer的钱(或在获胜时给他们底池),并且需要能够设置卡。因此,PokerPlayer的派生类无法直接更新自己的金钱和纸牌,而外部类Game可以。

我该如何实现?

谢谢您的时间,

c++ oop friend derived-class
1个回答
0
投票
您可以存储金钱和其他不应被当作基类私有成员的值,并将其更改限制为仅由PokerPlayer的私有功能进行,游戏应调用该私有功能,或应该能够更改的其他功能:

class Game; class PokerPlayer { friend class Game; private: int money; public: int getMoney() const; };

© www.soinside.com 2019 - 2024. All rights reserved.