有没有办法获得函数成员的确切地址? 例如,我有:
struct foo
{
void print() { printf("bla bla bla"); }
};
//////////////////////////////////////////////////////////////
unsigned int address = foo::print;
答案 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
的内容。
因此,你所要求的并不清楚。