我有 5 个称为操作符的类:
* Enter(x)
* Exit(x)
* Push(b,x,y)
* TurnOn(x)
* TurnOff(x)
还有 3 个称为 Predicates 的类:
* At(x,y) - example : At(Robot,Room3) , At(Box1,Room1) , At(Box3,Corridor)
* SwithOn(x) - SwitchOn(Room2)
* SwitchOff(x) - SwitchOff(Room1) , SwitchOff(Room4)
而且我希望有良好的数据结构来存储它们。
起初,我创建了两个基类并使用了继承:
为, 和
Predicate
_At(x,y)
SwithOn(x)
SwitchOff(x)
Operator
,Enter(x)
,Exit(x)
,Push(b,x,y)
,TurnOn(x)
的类TurnOff(x)
。
我添加了两个双端队列:
std::deque<Operator> operators;
std::deque<Predicate> predicates;
然后,当我创建例如一个Exit
运算符时:
Exit myExit ;
并将其推入双端队列:
operators.push_back(myExit); // this works fine
但是当我尝试从operators
deuqe 中提取某种元素时,我必须使用某种 cast 。
是否有可能拥有可以存储多个(不同类型)对象的数据结构?
我还处于规划阶段,您能否建议一些其他类型的设计,这样我在提取元素时不会遇到问题?我能想到的最好的事情是多态性......
问候