c++ - 如何在不使用类名作为作用域的情况下获取类中成员函数的地址?

标签 c++ class pointer-to-member

我想知道是否可以在不使用作用域的类名的情况下获取类中成员函数的地址。

在下面的例子中,在 main 内部是获取地址的正常方式,但在 func2 内部,有没有不使用类名的方法。要求这样的原因是,如果将来我更改类名,我不必去里面更改。 例如:

Class A
{
 void func1()
 {
 }
 void func2()
 {
  /Address of func1/ = &func1; // something like this possible?
 }
}
void main()
{
 /Address of func1/ = &A::func1;
}

最佳答案

对于非static成员函数,

&std::remove_reference_t<decltype(*this)>::func1

是一种方式。

对于static 函数,使用std::addressof

std::addressof(func1); 

这依赖于 A:: 是隐式的事实。

关于c++ - 如何在不使用类名作为作用域的情况下获取类中成员函数的地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53722560/

相关文章:

c++ - 我可以删除对象本身并重新分配它吗?

c++ - 是否不可能将 STL 映射与结构一起用作键?

python - 有没有办法将装饰器应用于需要类信息的 Python 方法?

python - 如何在类范围内使用类名?

c++ - 将指向成员函数的指针作为 void* 函数的参数传递

c++:可以使用boost::bind将成员函数转换为预期的函数指针签名吗?

c++ - 无法转换为类型的函数指针

c++ - 修改 const 对象的可变成员有效吗?

c++ - 在 xcode 4 中找不到文件

javascript - 如何在 jQuery/Javascript 中编写 switch 语句来测试元素是否具有特定类?