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