获取函数成员地址
get function member address
有没有办法获取函数成员的确切地址?例如,我有:
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
的内容调用不同的函数。
所以根本不清楚你要什么。
相关文章:
- C++:用户定义的类,以成员字段作为地址
- 为什么成员函数地址离自由函数这么远?
- Assimp 库错误:获取打包成员的地址
- C++ - 非静态 void* 成员,指向具有相同地址但不同值的不同对象的另一个非静态成员
- 在指向现有内存地址的 hpp 文件中声明成员函数的最佳方法
- C++多态性:有没有办法找到对象成员函数的地址?
- 如何获取结构体成员的地址
- 使用成员的地址初始化基类是否合法?
- C++:获取包含成员子对象的完整对象的地址
- 从对象及其成员的地址获取指向成员的指针
- 获取未初始化对象成员的地址是否定义良好?
- 指向未由对象地址初始化的对象的指针如何将值分配给类的数据成员
- 为什么有一个额外的 & 将非静态成员函数的地址传递给 C++ 中的线程?
- 类成员地址与类指针值相同
- 使用指向结构变量成员的指针访问该结构的成员的地址
- 类成员在构造函数(线程)之后更改地址
- 使用来自 Dll 的偏移地址调用成员函数
- 不太明白 & 运算符的地址在这个结构中做什么,以及它如何能够访问其他成员变量
- C 17标准是否保证工会的地址与其成员的地址相同
- 获取类成员功能的地址并从指针调用