我使用两个抽象类作为Game
和Player
作为游戏的接口
(我们称之为XX):
class Game --> class XXGame: public Game
class Player --> class XXPlayer: public Player
我在另一个名为
的班级中控制游戏class GameControl
XXGame
中有一个成员函数(在其接口Game
中的重载版本):
1- int XXGame::play(char* bet, int amount);
我在GameControl.cpp
中称它给我一轮游戏的结果。
但我还需要在XXPlayer
的成员函数中使用该成员函数作为:
2- bool XXPlayer::play(int numberOfTimes);
正如您所看到的,只有int numberOfTimes
作为函数(2)的参数。
但是我需要在函数(2)中调用函数(1)。我在类Game
中创建了一个指向XXPlayer
的指针:
Game* _gamep;
但我仍然不知道如何访问GameControl
中使用的函数(1)中的参数并在函数(2)中使用它们因为我对抽象类有限。
实际上使用函数(1)及其参数对函数(2)来说非常重要,我当然不应该改变接口的结构。
答案 0 :(得分:0)
如果您需要做一些古怪的事情,我认为您需要重新考虑您的设计。为什么要以这种限制方式定义接口?如果两个游戏功能如此相互依赖,为什么它们是分开的。
答案 1 :(得分:0)
可以XXPlayer
玩WWGame
游戏吗?
没有?然后指针_gamep
首先应该是XXGame
类型。在分配时,您可以执行从Game
到XXGame
的动态广播(请注意,如果它不是XXGame
实例,则可能会失败)并且内部XXPlayer
可以访问相应游戏类的游戏类型特定的扩展界面。
只要局外人不知道XXPlayer
存在,作为专业化,抽象Player
接口就完全履行了隐藏细节的角色。请注意,您还应该通过使用工厂模式隐藏XXPlayer
和XXGame
,以便调用代码仅将它们视为抽象Game
和Player
。< / p>