DBe*_*eck 2 c++ variables unordered-map function auto
这不应该太难,但我被卡住了。
我正在尝试将函数分配给变量,但我需要知道数据类型,以便将其分配给地图。
我成功地做到了这一点:
auto pfunc = Ext::SomeFunction
Run Code Online (Sandbox Code Playgroud)
这将允许我做:
pfunc(arg, arg2);
Run Code Online (Sandbox Code Playgroud)
但是我需要知道“auto”涵盖的数据类型,以便我可以将我的函数映射到字符串。
例如:
std::unordered_map<std::string, "datatype"> StringToFunc = {{"Duplicate", Ext::Duplicate}};
Run Code Online (Sandbox Code Playgroud)
这些函数中的大多数返回 void,但还有其他函数返回 double 和 int。
如果有更好的方法可以做到这一点,请告诉我,但我真的很想知道上面使用的 auto 背后的数据类型。
非常感谢您提供的任何帮助。
给定 aclass foo和成员函数fun,您可以通过以下方式创建成员函数指针:
struct foo
{
void fun(int, float);
};
void(foo::*fptr)(int, float) = &foo::fun;
Run Code Online (Sandbox Code Playgroud)
所以类型fptr是void(foo::*)(int, float). 通常对于这样的事情,您可能希望引入一个typedefor 类型别名以使声明更具可读性:
using function = void(foo::*)(int, float);
// or typedef void(foo::*function)(int, float);
function fptr = &foo::fun;
Run Code Online (Sandbox Code Playgroud)
此外,以上内容适用于成员函数指针。对于自由函数,语法为:
void fun(int, float);
void(*fptr)(int, float) = &fun;
Run Code Online (Sandbox Code Playgroud)
您可以相应地定义您的类型别名。
| 归档时间: |
|
| 查看次数: |
5412 次 |
| 最近记录: |