1
我試圖從另一個類中存儲第一個指針的類方法綁定,但它總是給我不同的值。 我在做什麼錯?C++功能:通過指針綁定類方法
如果我按值傳遞類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;
}
a_mul不能像這樣內聯初始化,所以我認爲這不是你正在運行的確切代碼。除了a_mul初始化,它看起來沒問題。所以這個問題必須存在於沒有被顯示的東西中...... – dlf
@dlf「a_mul不能像這樣內聯初始化」是的,歡迎來到C++ 11。 –
@ n.m。整齊!但顯然不是微軟的(2012)C++ 11。 :( – dlf