以下は、3つのクラスを詳述した簡略化されたヘッダーファイルです。私は私の "Game"クラスのポインタをプライベートにして、Introductionにそれを変更させたいと思っています。しかし、そのままでは動作しません。 IntroductionはGameStateの派生物なので、私はこのポインタを変更できると思ったのですか?例はこれが可能であることを示していた。私はこれをゲーム内のパブリックスペースに移動したくはありません。私は、次のされた例がここにいたC++ネストされたクラスへのアクセス
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;
}
編集:回答いただきありがとうございます、私はゲッターとセッターが行く方法だと思う。そして、問題は明らかではないことを謝ります。 問題は、私が実行しようとしていた実装を理解していないということでした。私はまだそれを理解していないが、明らかに同じことを達成する方法がある。
はただ非常に悪い問題の説明で、「これが動作していない」と述べました。 ***どのように動作していないのですか?また、[良い質問をする方法について読む](http://stackoverflow.com/help/how-to-ask)をご覧ください。 –
あなたはこれらのクラスの使い方を示していません。 –
私はこの使い方の簡単な例を追加しました。これはリンクで可能であると示されました。 –