我希望能够创建一个宏,用于定义一个函数,该函数对对象列表进行调用。这个宏不一定需要是预处理器宏,但它应该能够正常工作。
我想要编写类似于以下内容的代码:
问题在于我必须像这样分别编写定义签名和调用签名:
我想要编写类似于以下内容的代码:
CALL_ON_ALL(doSomething(int arg1, bool arg2))
我希望它能生成这个:
void doSomething(int arg1, bool arg2) {
for (int i = 0; i < delegates.size(); i++)
delegates[i]->doSomething(arg1, arg2);
}
我有一个能用的东西:
#define CALL_ON_ALL(defSig, callSig) \
void defSig { \
for (int i = 0; i < delegates.size(); i++) \
delegates[i]->callSig; \
}
问题在于我必须像这样分别编写定义签名和调用签名:
CALL_ON_ALL(doSomething(int arg1, bool arg2), doSomething(arg1, arg2))
有更好的方法吗?
编辑
不一定要使用预处理器宏,任何有效的方法都可以。
c
标签吧。另外,请使用@
通知语法。 - Lightness Races in Orbit