我基本上有这个问题:现在,我们有一个系统,它获取一个字符串作为输入,它基本上说ACTION:.
对于每个动作,都有一个自动生成的函数(Rational Rose GRRR),例如
bouncer_comm.chatMessage("data goes here").sendAt(msg->sapIndex0()); bouncer_comm.askforname().sendAt(msg->sapindex0());
bouncer_comm
返回一个RTOutSignal
,我无法手动创建它们,因为玫瑰使用了奇怪的结构.
现在,我唯一的选择是创建一百个左右的if语句,我这样做:
if(action == "CHAT") bouncer_comm.chatMessage("data goes here").sendAt(msg->sapIndex0());
这真是令人烦恼.
什么是避免这种情况的最佳方法?我看过/试过无数的东西,这是理性玫瑰(前2k)的旧版本,是的.
如果有人有任何想法会很惊人.
我喜欢@ cobbal关于上面的函数指针哈希的想法,但是你可以用多态来替换这个条件逻辑.
请参阅:http: //c2.com/cgi/wiki ?ReplaceConditionalWithPolymorphism
哈希存储函数指针可以在这里很好地工作