如何在 C++ 中获取成员函数的 绝对 地址? (我需要这个来思考。)
成员函数指针不起作用,因为我无法将它们转换为绝对地址( void *
)——我需要知道内存中实际函数的地址,而不仅仅是相对于类型的地址。
原文由 user541686 发布,翻译遵循 CC BY-SA 4.0 许可协议
如何在 C++ 中获取成员函数的 绝对 地址? (我需要这个来思考。)
成员函数指针不起作用,因为我无法将它们转换为绝对地址( void *
)——我需要知道内存中实际函数的地址,而不仅仅是相对于类型的地址。
原文由 user541686 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.5k 阅读
3 回答479 阅读✓ 已解决
在 MSVC 中存在获取成员函数地址的语法(从 MSVC 2005 恕我直言开始)。但这很棘手。而且,获得的指针不可能通过常规方式转换为其他指针类型。尽管有一种方法可以做到这一点。
这是示例:
即使使用
reinterpret_cast
常规演员表也不起作用,这一事实可能意味着 MS 并不强烈推荐这种演员表。不过你可以这样做。当然,这都是依赖于实现的,你必须知道适当的调用约定来做 thunking + 有适当的汇编技能。