c++ - 如何在不使用类名作为范围的情况下获取类中成员函数的地址?
问题描述
我想知道是否可以在不使用类名作为范围的情况下获取类中成员函数的地址。
在下面的例子中,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::
这依赖于隐含的事实。
推荐阅读
- fortran - fortran77中MAX(a1, a2, a3)的输出为0
- sql - Oracle SQL 根据特定的列列表检查值
- javascript - 获取返回的 html 标记
- python - 需要创建具有相同人口的垃圾箱。还需要生成包含 bins 和 cut 之间的交叉表的报告
- google-cloud-storage - 如何为 google-cloud-cpp sdk 启用日志记录
- python - 静态图像到 base64 标记失败
- python - 在 python 中使用 genfromtxt 时出现值错误
- r - R:合并两个数据帧(分组/汇总)时如何避免出错?
- regex - 正则表达式 - 匹配第 n 个字符,然后停止(非贪婪)
- node.js - 异步for循环不将sqs消息放入队列