C++将函数指针放入一行的映射中
C++ put function pointer into a map in one line
在我的项目中,我有以下功能:
static void test0(void)
{
printf("%s [%d]n", __func__, __LINE__);
}
static void test0(int a)
{
printf("%s [%d] %dn", __func__, __LINE__, a);
}
static std::map<std::string, void*> getAddressMap()
{
std::map<std::string, void*> addressmap;
void (*select1)(void) = test0; // will match void(void)
addressmap["test0"]=reinterpret_cast<void *>(select1);
void (*select2)(int) = test0; // will match void(int)
addressmap["test0"]=reinterpret_cast<void *>(select2);
return addressmap;
}
在这一点上,您可以看到,为了将每个指针存储在地图中,我需要定义一个特殊的指针,然后我才能将其存储在地图中......
由于所有这些方法和存根都是从模板生成的,因此仅使用一行会更实用。所以,我的问题是,有没有办法只用一行?
强制转换函数指针(在转换为 void* 之前(应该可以正常工作......
addressmap["test0"] = reinterpret_cast<void *>(static_cast<void(*)(void)>(test0));
addressmap["test0"] = reinterpret_cast<void *>(static_cast<void(*)(int)>(test0));
相关文章:
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- 用c++从输入文件中读取另一行
- 读取文件的最后一行并输入到链接列表时出错
- 将函数类成员映射到类本身内部
- 如何在 C# 中映射双 C 结构指针?
- 如何在C++中使用结构生成映射
- 使用std::函数映射对象方法
- 如何加载(或映射)文件部分的最大大小,但适合在Windows上的RAM
- C++映射分割错误(核心转储)
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- 内联映射初始化的动态atexit析构函数崩溃
- 使用"std::unordereded_map"映射到"std::list"对象
- 如何从多映射中删除特定的重复项
- 在未初始化映射的情况下,将值插入到映射的映射中
- 从C++dll访问C#中的一行主要参数
- QT通过C++添加映射QML项目
- 在c++中访问int到类对象的映射时出错
- C++将函数指针放入一行的映射中
- 一行 std::vector ctor 来自映射另一个向量