gpt4 book ai didi

c++ - C++中指向类方法的指针

转载 作者:搜寻专家 更新时间:2023-10-31 02:08:17 25 4
gpt4 key购买 nike

<分区>

A 有很多 B 类,一个类 A 有一个对象 b。这个对象 b 有一个函数 (calc),它需要一个指向 A 的对象中的方法的指针。这个方法(有趣)访问类中的私有(private)变量(在我的例子中只返回 3)。

class A;

class B {
public:
virtual int calc ( int (A::*fun)()) { return 2*fun(); };
};

class A {
B* b;

public:
A (B* b_) : b (b_) {};
int fun() { return 3; };
int run(){ return b->calc(&A::fun); };
};

int main() {
B* b = new B();
A a(b);
a.run();
return 0;
}

如何在类 B 中的 calc 方法定义中正确使用指向方法的指针?

我收到此错误消息:

teste.cpp:10:58: error: must use ‘.*’ or ‘->*’ to call pointer-to-member     function in ‘fun (...)’, e.g. ‘(... ->* fun) (...)’
virtual int calc ( int (A::*fun)()) { return 2*fun(); };
^

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com