【发布时间】:2019-08-23 06:33:27
【问题描述】:
为了澄清,我正在尝试创建一个宏,它使获取成员函数地址更容易一些,所以我希望输入当前类的成员函数名称(并且只有成员函数名称)和宏将使用变量的类型或封闭类的类型来实际访问函数。 例如
#define GETMEMBERFUNCTIONPOINTER(identifier) /*magic code goes here*/
struct myStruct {
void (myStruct::*functionPointer)();
void myMemberFunc() {
}
myStruct() {
functionPointer = GETMEMBERFUNCTIONPOINTER(myMemberFunc);
}
};
这可能吗?我管理的最接近的方法是让每个类都继承一个可以在宏中使用的私有 typedef
【问题讨论】:
-
哇,对于 C++ 中的所有“弗兰肯斯坦怪物”开发,它仍然不允许
&myMemberFunc。有趣的是,如果您使用-fpermissive调用它,GNU C++ 允许它作为扩展。 -
@Kaz“弗兰肯斯坦怪物”是描述我如何编码的好方法,所以我使用 c++ 的大部分人只是“为什么我无法获得指向析构函数的指针!怎么会我无法获得指向成员函数的直接指针!为什么我不能将其写入 typedef!”。这可能是一个不好的迹象。不过很高兴了解 GNU C++。