【发布时间】:2017-01-05 17:46:42
【问题描述】:
以下是一个简化的头文件,详细说明了三个类。我希望能够将“游戏”类中的指针保持私有,并允许 Introduction 对其进行修改。但是,按原样,这是行不通的。由于 Introduction 是 GameState 的衍生物,我想我可以修改这个指针吗?例子表明这是可能的。我真的不想把它移到游戏中的公共空间。
class Introduction;
class Game;
class GameState;
class GameState
{
public:
static Introduction intro;
virtual ~GameState();
virtual void handleinput(Game& game, int arbitary);
virtual void update(Game& game);
};
class Introduction : public GameState
{
public:
Introduction();
virtual void handleinput(Game& game, int arbitary);
virtual void update(Game& game);
};
class Game
{
public:
Game();
~Game();
virtual void handleinput(int arbitary);
virtual void update();
private:
GameState* state_;
};
我关注的例子在这里...http://gameprogrammingpatterns.com/state.html
编辑:我想做这样的事情......
void Introduction::handleinput(Game& game, int arbitary)
{
if (arbitary == 1)
std::cout << "switching to playing state" << std::endl;
game.state_ = &GameState::play;
}
编辑:感谢您的回复,我认为 getter 和 setter 是要走的路。我很抱歉问题不清楚。 问题是我不理解我试图遵循的实现。我仍然不明白,但显然有办法完成同样的事情。
【问题讨论】:
-
只是说“这不起作用”是一个非常糟糕的问题描述。 如何它不起作用?也请read about how to ask good questions.
-
你还没有展示你是如何使用这些类的。
-
我添加了一个简单的例子来说明我想如何使用它。这在链接中显示为可行。
-
你的问题不是已经被问到并回答了here吗?
-
恐怕这是一个不同的问题。不过,我感谢大家的意见。