获取函数成员地址

时间:2013-01-29 08:23:12

标签: c++ function structure member

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

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

2 个答案:

答案 0 :(得分:2)

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

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

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

(fooInstance.*func)();

答案 1 :(得分:1)

我不确定你的“确切地址”是什么意思。有 当然没办法在unsigned int中添加任何地址 (小于我机器上的指针)。为了那个原因 重要的是,没有办法把指针放到一个函数中 一个void*。再次,我使用了指针指向的机器 函数大于void*。最后,没有 将指针放入(非静态)成员函数的方法 指向函数的指针;指向成员函数的指针差不多 总是更大。最后,给出:

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

mais调用不同的函数,具体取决于p的内容。

因此,你所要求的并不清楚。