C++宏访问封闭类的名称

C++宏访问封闭类的名称,c++,macros,C++,Macros,为了澄清这一点,我正在尝试创建一个宏,它使获取成员函数地址变得更容易,因此我希望输入当前类的成员函数名,并且只输入成员函数名,宏将使用变量的类型或封闭类的类型来实际访问函数。 e、 g 这可能吗?我最接近的方法是让每个类继承一个私有typedef,它可以在宏中使用免责声明: 话虽如此,我相信你正在寻找的魔法密码是 #define GETMEMBERFUNCTIONPOINTER(identifier) (&std::remove_pointer_t<decltype(this)&g

为了澄清这一点,我正在尝试创建一个宏,它使获取成员函数地址变得更容易,因此我希望输入当前类的成员函数名,并且只输入成员函数名,宏将使用变量的类型或封闭类的类型来实际访问函数。 e、 g

这可能吗?我最接近的方法是让每个类继承一个私有typedef,它可以在宏中使用

免责声明:

话虽如此,我相信你正在寻找的魔法密码是

#define GETMEMBERFUNCTIONPOINTER(identifier) (&std::remove_pointer_t<decltype(this)>::identifier)
工作示例


然而,我不认为任何人真的应该这样做。如果你的设计需要频繁地使用成员函数指针,你会发现你自己想要宏来为你做这个,那么我强烈建议在你继续之前认真地考虑你正在做的任何事情……/P>哇,对于C++中所有的FraveStin怪物开发,它仍然不允许只和MyMeNefFoc。有趣的是,如果你用它来调用它,GNU C++允许它作为一个扩展。@ KAZ FraveStin怪物是描述我的代码的一个好方法,所以我使用C++的很多东西就是为什么我不能得到一个指向析构函数的指针!为什么我不能得到一个直接指向成员函数的指针呢!为什么我不能把这个写进打字机呢!。这可能是个坏兆头。很高兴知道GNU C++,非常感谢!它工作得很好!相信我,我听到我认为你需要重新思考你正在做的事情,我明白了,但我忍不住想尝试那些通常与代码标准相悖的选项。我通常会弄明白为什么它违反了代码标准,或者发现它很奇怪但很实用。再次感谢@TechNeko你已经被警告过了。断腿-
#define GETMEMBERFUNCTIONPOINTER(identifier) (&std::remove_pointer_t<decltype(this)>::identifier)