我试图从另一个存储第一个指针的类中绑定一个类方法,但它总是给我不同的值。我究竟做错了什么?
如果我按值传递 A 类(当然修改 B 类以按值存储),它就可以工作。
#include <iostream>
#include <functional>
using namespace std;
class A {
public:
A(double a, double b) : a(a), b(b) {}
double mul(void) {return a*b;}
private:
double a;
double b;
};
class B {
typedef std::function<double(void)> function;
public:
B(A* ap) : ap(ap) {}
function a_mul = bind(&A::mul, ap);
private:
A* ap;
};
int main() {
A* a = new A(2,3);
B b(a);
cout << b.a_mul() << endl;
return 0;
}