これを C++ で動作させるのに苦労しています。C# で管理しましたが、C++ をあまり使用していないため、構文がわかりません。
これの目的は単純な状態マネージャーのためであり、各状態は「状態」と呼ばれる基本クラスから継承されます。
オーバーライドして機能するようになりましたが、ポリモーフィズムの側面を管理できないようです。つまり、オブジェクト「State currentState」を持ち、そのオブジェクトを「menuState」に等しく設定して、目的の機能を実行させることはできません。これは、State クラスのシグネチャを見つけるだけであるためであることはわかっていますが、方法がわかりませんそれを避けてください。誰かが私を理解するのを助けることができるように、ここにいくつかの単純化されたコードがあります。
// stringstreams
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
// State.h
class State{
public:
virtual void drawState();
};
// State.cpp
void State::drawState() {
cout << "Base state.\n";
}
// MenuState.h
class MenuState: public State {
public:
virtual void drawState();
};
// MenuState.cpp
void MenuState::drawState() {
cout << "Menu state.\n";
State::drawState();
}
int main ()
{
State currentState;
MenuState menuState;
currentState = menuState;
currentState.drawState();
system("pause");
return 0;
}
「State currentState」を変更してMenuStateのオブジェクトを作成すると、コードは必要に応じて機能しますが、現在の状態を将来作成する他の状態に設定できるように、親クラスにする必要があります。 GameState として。
ありがとうございました。