我有一个在公共接口中调用的函数集,我将这些函数指针存储在一个公共容器中,所以我有
typedef void(*CommandFunction)(const InputArgsMap &, const ArgumentMap *);
话虽如此,在不复制粘贴参数列表的情况下声明这种类型的函数的最佳方法是什么?我想通过#define
来实现这一点,但是还有其他(更好,哎呀)的方法吗?
例如,是否有可能做类似的事情
#define CMD_ARGS (const InputArgsMap &, const ArgumentMap *)
void _fcn_1(CMD_ARGS);
void _fnc_2(CMD_ARGS);
如果声明函数而不是指针,请键入别名
typedef void CommandFunction(const InputArgsMap &, const ArgumentMap *);
然后你可以使用它来声明函数
CommandFunction _fcn_1;
CommandFunction _fcn_2;
定义参数列表时,仍需要写出参数列表。
还有其他(更好,哎呀)方法吗?
覆盖抽象接口的虚拟成员函数可能会更好,具体取决于您正在执行的操作。如果这样做,您将不得不复制参数列表,这似乎令人反感;但在现代C++中,您至少可以使用override
说明符来确保正确。