c++ - 如何比较成员指针函数与 Microsoft Visual C 中涉及的 DLL 的相等性?

标签 c++ function pointers dll member

从我读到的here可以比较两个指向成员函数的指针是否相等。然而,这篇文章似乎只涵盖了不涉及 DLL 的单个可执行文件的情况。

是否可以使用 DLL 检查两个函数是否相等?假设我们有

class DLL A
{
public:
  virtual bool aaa();
};

在DLL中有一个变量

bool DLL (A::*dllpointer)() = &A::aaa;

我们在可执行文件中也有一个变量

bool (A::*exepointer)() = &A::aaa;

当我试着比较两者时

if (dllpointer == exepointer)

它的工作原理就好像两者不相等一样。这可能是预期的行为,但我想知道是否有可能克服此限制以便比较返回 true

最佳答案

比较指针(无论它们是指向成员函数、成员变量还是其他任何东西)只会告诉您指针是否指向同一事物——如果它们指向“同一事物的不同实例”则不会相同的属性”。由于“EXE 的”class A 的成员函数不可能与“DLL 的”class A 的函数相同,因为它们是称为同名,你不能指望指针是相同的。不,没有真正的方法可以解决这个问题。您可以比较函数的“内容”,看看代码是否相同,但这需要知道函数的长度,这不是一件容易的事。

关于c++ - 如何比较成员指针函数与 Microsoft Visual C 中涉及的 DLL 的相等性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16279688/

相关文章:

c - 将数据写入二进制文件,然后读回

pointers - Lua表->地址和地址->表

c++ - 如何用字符串创建条件?

C++ 绑定(bind)回调到一个类

android - 用基于 ffmpeg 的编码器替换标准的 Android H264 软件编码器

javascript - 我的构造函数有什么问题

c++ - 使用use_future的多播Boost Asio async_recieve_与async_send_to不能同时使用

javascript - jQuery - API 选项作为函数?

javascript - 在同一功能的操作之间添加时间延迟?

代码适用于 MinGW,但不适用于我大学的计算机(C 语言)