gpt4 book ai didi

c++ - 需要在C++中将函数分配给变量

转载 作者:行者123 更新时间:2023-12-03 12:49:38 24 4
gpt4 key购买 nike

这应该不会太难,但我被困住了。

我正在尝试将函数分配给变量,但我需要知道数据类型,以便可以将其分配给映射。

我成功地做到了这一点:

auto pfunc = Ext::SomeFunction

这将允许我做:

pfunc(arg, arg2);

但我需要知道“auto”涵盖什么数据类型,以便我可以将我的函数映射到字符串。

例如:

std::unordered_map<std::string, "datatype"> StringToFunc = {{"Duplicate", Ext::Duplicate}};

大多数函数返回 void,但也有其他函数返回 double 和 int。

如果有更好的方法,请告诉我,但我真的很想知道上面使用的 auto 背后的数据类型。

非常感谢您收到的任何帮助。

最佳答案

给定一个class foo和一个成员函数fun,您可以通过以下方式创建一个成员函数指针:

struct foo 
{
void fun(int, float);
};

void(foo::*fptr)(int, float) = &foo::fun;

因此,fptr 的类型将为 void(foo::*)(int, float)。通常,对于这样的事情,您可能需要引入 typedef 或类型别名以使声明更具可读性:

using function = void(foo::*)(int, float);
// or typedef void(foo::*function)(int, float);
function fptr = &foo::fun;

此外,上述内容适用于成员函数指针。对于自由函数,语法为:

void fun(int, float);
void(*fptr)(int, float) = &fun;

您可以相应地定义类型别名。

关于c++ - 需要在C++中将函数分配给变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44289057/

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