【发布时间】:2012-12-14 17:52:18
【问题描述】:
我有 5 个类用作运算符:
TurnOn , TurnOff , PushBox , Exit , Enter
对于每种类型,我都有一个包含该类型描述的字符串。
例如:
class Places {
enum Type { Room1 ,Room2 ,Room3 ,Room4 };
// more stuff
};
TurnOn turnOn(Places::Room1);
string turnOnString = "TurnOn(Room1)" ;
我想将信息存储在地图中,所以我为每个运营商准备了 5 张地图:
map <string , TurnOn > opeatorTurnOn;
map <string , TurnOff > opeatorTurnOff ;
map <string , PushBox > opeatorTPushBox ;
map <string , Exit > opeatorExit ;
map <string , Enter > opeatorEnter ;
但现在我有 5 个具有相同概念的地图:带有操作符的字符串。
如何将运算符存储在一张地图中,这样我就不必保存 5 张具有相同概念的地图?
【问题讨论】:
-
这似乎是一个有缺陷的设计,5 个不是从基类
operator派生的运算符类?当预定义数字时,从基类派生所有按钮并在整个程序中动态创建新运算符会更有意义。例如operator * turnOn = new TurnOn; -
@Need4Sleep: (1) 这应该是一个答案。 (2) 我会尝试修复我的设计。谢谢!