operator を呼び出す 5 つのクラスがあります。
* Enter(x)
* Exit(x)
* Push(b,x,y)
* TurnOn(x)
* TurnOff(x)
Predicates と呼ばれるさらに 3 つのクラスがあります。
* At(x,y) - example : At(Robot,Room3) , At(Box1,Room1) , At(Box3,Corridor)
* SwithOn(x) - SwitchOn(Room2)
* SwitchOff(x) - SwitchOff(Room1) , SwitchOff(Room4)
そして、それらを保存するための優れたデータ構造が必要です。
最初に、2 つの基本クラスを作成し、継承を使用しました。
、 および
Predicate
のクラスAt(x,y)
SwithOn(x)
SwitchOff(x)
、、、、、のクラス。
Operator
_Enter(x)
_Exit(x)
_Push(b,x,y)
TurnOn(x)
TurnOff(x)
そして、次の 2 つの deques を追加しました。
std::deque<Operator> operators;
std::deque<Predicate> predicates;
そして、たとえばExit
演算子を作成すると:
Exit myExit ;
それを両端キューにプッシュします。
operators.push_back(myExit); // this works fine
しかし、operators
deuqe から何らかの要素を抽出しようとすると、何らかのキャストを使用する必要があります。
複数の (異なるタイプの) オブジェクトを格納できるデータ構造を持つことは可能ですか?
まだ計画段階ですが、要素の抽出に問題がないように、他の種類のデザインを提案できますか? 私が考えることができる最善のことは、ポリモーフィズムです...
よろしく