我正在为教育目的编写一个代表类,但遇到了一个小问题。委托不仅必须能够调用函数,还必须能够调用对象的成员方法,这意味着我需要存储指向方法的指针:
void (classname::*methodPtr)(...);
我需要存储指向不同类和不同参数列表的方法的指针。起初我只是想将方法指针强制转换为 void *,但编译器因无效强制转换错误而终止。结果是 sizeof(methodPtr) == 8 (此处为 32 位系统),但转换为 unsigned long long 也会失败(相同的编译器错误 - 无效转换)。那么如何通用地存储方法指针呢?
我知道这不安全 - 我有其他安全机制,请专注于我的问题。
你不知道。如果需要抽象,可以使用运行时继承,并创建一个根据需要进行模板化的派生类,或者最好通过使用函数创建一个普通的旧仿函数。查看boost::bind
and boost::function
(都在 C++0x 标准中)关于应该如何完成 - 无论如何,如果你可以阅读它们超越所有宏混乱。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)