我基本上遇到了这个问题:现在,我们有一个系统,它获取一个字符串作为输入,它基本上说 ACTION:。
对于每个 Action 都有一个自动生成的函数(Rational Rose GRRR),例如
bouncer_comm.chatMessage("data goes here").sendAt(msg->sapIndex0());
bouncer_comm.askforname().sendAt(msg->sapindex0());
bouncer_comm
返回一个 RTOutSignal
,我无法手动创建它们,因为 rose 使用了奇怪的结构。
现在,我唯一的选择是创建一百个左右的 if 语句,我这样做:
if(action == "CHAT") bouncer_comm.chatMessage("data goes here").sendAt(msg->sapIndex0());
这真的很烦人。
避免这种情况的最佳方法是什么?我看过/尝试过无数东西,这是一个非常老的 rational rose 版本(2k 之前),是的。
如果有人有任何想法,那就太棒了。
最佳答案
我喜欢@cobbal 上面的函数指针散列的想法,但是您可以用多态性替换这个条件逻辑。
参见:http://c2.com/cgi/wiki?ReplaceConditionalWithPolymorphism
关于c++ - 避免一千个 if 语句的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/670026/