#define函数参数c ++

时间:2014-11-25 11:42:48

标签: c++

我在一个公共接口中调用了一组函数,并将这些函数指针存储在一个公共容器中,所以我有

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);

1 个答案:

答案 0 :(得分:5)

如果声明一个函数而不是指针,请键入别名

typedef void CommandFunction(const InputArgsMap &, const ArgumentMap *);

然后你可以用它来声明函数

CommandFunction _fcn_1;
CommandFunction _fcn_2;

在定义参数列表时,您仍需要写出参数列表。

  

还有其他(更好的,oop)方式吗?

覆盖抽象接口的虚拟成员函数可能更好,具体取决于您正在做什么。如果你这样做,你将不得不复制参数列表,你似乎觉得这很令人反感;但是在现代C ++中,你至少可以使用override说明符来确保你做对了。