看看下面的代码,你能看出错误吗
class A {
public:
void fun()
{
}
};
int main() {
A a;
void (A:: * p)() = &A::fun;
(*p)();
}
这段代码在调用成员函数时存在问题。正确的方式是使用对象来调用成员函数,而不是通过指针。以下是修正后的代码:
class A {
public:
void fun() {
}
};
int main() {
A a;
void (A::* p)() = &A::fun;
(a.*p)(); // 通过对象调用成员函数
}
修正后的代码通过(a.*p)()
的方式调用了成员函数fun
,其中a
是对象,p
是指向成员函数的指针。这样就可以正确地调用成员函数了。