gpt4 book ai didi

c++ - #define 函数参数 C++

转载 作者:太空狗 更新时间:2023-10-29 20:39:39 25 4
gpt4 key购买 nike

我有一组在公共(public)接口(interface)中调用的函数,我将这些函数指针存储在一个公共(public)容器中,所以我有

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

最佳答案

如果你声明一个函数,而不是指针,类型别名

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

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

CommandFunction _fcn_1;
CommandFunction _fcn_2;

你仍然需要在定义它们时写出参数列表。

is there any other (better, oop) way?

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

关于c++ - #define 函数参数 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27125793/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com