获取函数成员地址

get function member address

本文关键字:地址 成员 函数 获取      更新时间:2023-10-16

有没有办法获取函数成员的确切地址?例如,我有:

struct foo
{
    void print() { printf("bla bla bla"); }
};
//////////////////////////////////////////////////////////////
unsigned int address = foo::print;

可以使用以下语法声明指向成员函数的指针:

typedef void (foo::*address)();
address func = &foo::print;

为了调用非静态成员函数,您需要该类的现有实例:

(fooInstance.*func)();

我不确定你所说的"确切地址"是什么意思。 有当然没有办法把任何地址放在unsigned int(比我机器上的指针小)。 为此物质,没有办法将指向函数的指针放入一void*. 同样,我使用过指向的机器一个函数大于void*。 最后,没有将指向(非静态)成员函数的指针放入的方法指向函数的指针;指向成员函数的指针几乎总是更大。 最后,给定:

void (MyClass::*pmf)();
MyClass* p;
(p->*pmf)();

MAI 根据 p 的内容调用不同的函数。

所以根本不清楚你要什么。