【发布时间】:2020-09-11 17:05:44
【问题描述】:
我遇到了一些 C++ 代码,大致如下:
void (classA::*methodA)() const noexcept
{
&classA::methodB
};
注意:显然我在这个例子中抽象出了类名和方法名。
methodA的目的是什么?
代码分析
- 它似乎引用了
methodB,但没有括号,因此它似乎没有调用该方法 - 它使用与符号
&,我读为take the address of - 最后
methodA没有返回任何内容
总的来说,它似乎只是引用了address of 方法B。
有什么建议吗?
【问题讨论】:
-
这不会编译,所以它的作用是有争议的。
-
嗯,它确实为我编译。除非它隐藏在我看不到的一些#ifdef 后面。我也确实看到它被调用了。我可以尝试添加一个 printf 来查看它是否真的被调用了。
-
您已经展示了 3 行代码。请发minimal reproducible example
-
我们可以得到minimal reproducible example 吗?对我来说,这不应该编译为
classA::*methodA不是成员指针或成员函数指针的正确语法。 -
好的,抱歉。我将得到一个最小的可重现示例..