当前位置: 首页 > 知识库问答 >
问题:

在C++11中,我如何将“const void*”转换为函数指针?

欧浩淼
2023-03-14
std::unordered_map<std::string, const void*> originals_;

template <typename R, typename... Args>
R CallOriginal(const std::string& name, Args... args) {
  return reinterpret_cast<R (*const)(Args...)>(originals_[name])(args...);
}

共有1个答案

郭炳
2023-03-14

您希望删除函数签名并只存储函数指针。

为此,可以将函数指针强制转换为其他函数指针,比如typedef void(*p)()

C++可以工作在数据内存和代码内存不交互并且指针大小不同的架构上。因此,将函数指针转换为数据指针通常不安全

 类似资料:
  • 问题内容: 我有一个使用ctypes调用Python的C++回调函数。该函数的参数是一个指向double和元素数量数组的指针。 元素很多,大约2,000,000。我需要将此发送到scipy函数。 C ++原型是: 以下是python代码: 问题是打印数据列表返回: 这是不正确的(在c ++端检查时,数据中填充了许多其他数字。 另外,如果我使用此代码将数据转换为python列表,则会在分配步骤中锁定

  • 问题内容: 如果我在名称空间栏中有一个Foo类: 然后,我可以: 现在就像我在名称空间中用Baz定义了类。 是否可以对功能执行相同操作? 然后: 什么是最干净的方法? 该解决方案也应适用于模板功能。 定义: 如果某个实体B是A 的 别名 ,则与在源代码中(剥离的)生成的代码保持原样相比,如果A的任何或所有用法(当然不是声明​​或定义)在源代码中被B取代。例如是一个别名。是一个别名(至少)。不是别名

  • 问题内容: 我有大量的卡令牌(16位数字)从xml文件上传到sql-server。问题是我将它们视为表达式,示例如下: 有什么建议将它们更改为16位数字吗?我试图更改数据类型,但出现错误 感谢帮助! 编辑: @XLAnt参见下面的代码。我从另一个表创建此表,而该表只是从xml文件插入的。这是因为TOKEN列中的某些行为空,可能会导致错误吗? 问题答案: 尝试在转换之前将字符串强制转换为float:

  • 问题内容: 有没有一种方法可以使用内置函数在PHP中将指数数转换为整数?格式化功能? 1.2378147769392E + 14至123781477693917 问题答案: number_format(1.2378147769392E+14,0,’‘,’‘) 但是,要处理大量数字,如果要保持精度,应该研究BCMath扩展

  • 问题内容: 我正在寻找C#代码以将HTML文档转换为纯文本。 我不是在寻找简单的标记剥离方法,而是会输出纯文本并 合理 保留原始布局的东西。 输出应如下所示: W3C的Html2Txt 我看过HTML Agility Pack,但我认为这不是我所需要的。有人还有其他建议吗? 编辑: 我只是从CodePlex下载HTML Agility Pack ,并运行了Html2Txt项目。真令人失望(至少是将

  • 问题内容: 我有一个想要表示为C#类的复杂JSON对象。我在名为“ Form”的父类上有一个良好的开端,但是如何代表不同类型的集合(请参见下面的“ elements”对象)? 这是JSON对象: 我开始的课程看起来像这样: 如何处理“ elements”属性以获得所需的JSON输出? 我正在WCF 4.0和web.config中的以下属性一起使用:automaticFormatSelectionE