嗯,我设计了发布/子系列模式(它不是观察者模式!很多人都对此感到困惑)。我的问题是:
我的主题是:
enum topics {gui, combat, physics};
然后对于每个主题我需要2个容器。目前我是手工做的:
std::vector <cSubscriber *> guiSubscribers;
std::vector <cEvent> guiEvents;
我想要做的是拥有一个使用枚举作为键的向量容器。我的意思是我可以通过以下方式访问它:
events[gui] //it gives me access to vector of gui events
subscribers[combat] //this gives me access to vector of combat subscribers
[]中的键必须是枚举中的值。有没有办法做到这一点,或者我需要为每个主题手动完成?
答案 0 :(得分:1)
一种可能性是std::map<topics, std::vector<cEvent>>
。但是,这可能有点过分,因为你只有3个枚举值,编号为0,1和2 ......
答案 1 :(得分:1)
如果预先知道元素的数量,是否真的有必要使用向量? 这样的解决方案怎么样:
template<class T> struct topics {
T gui, combat, physics
};
topics<cSubscriber *> guiSubscribers;
topics<cEvent> guiEvents;