我有 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
但是当我尝试从operatorsdeuqe 中提取某种元素时,我必须使用某种 cast 。
是否有可能拥有可以存储多个(不同类型)对象的数据结构?
我还处于规划阶段,您能否建议一些其他类型的设计,这样我在提取元素时不会遇到问题?我能想到的最好的事情是多态性......
问候