struct myclass {
myclass(){}
myclass(int qx):z(qx){ }
std::function<void()> create() {
auto px = [z](){
std::cout << z << std::endl;
};
return px;
}
int z;
};
myclass my;
my.z = 2;
auto func = my.create();
func();
my.z = 3;
func();
這個代碼編譯4.6.3,這將做正確的事情,使成員變量z的副本,都打印將獲得2 4.8.2,這並不編譯了..在C++ 11中通過值捕獲成員變量的好方法是什麼?
error: ‘this’ was not captured for this lambda function
我想知道爲什麼這個功能被刪除,因爲它非常有用。
解決方法:'自動Z =這個 - > Z者除外; auto px = [z] {...};'。 – Nawaz
@Nawaz是的,的確,謝謝。 – vsoftco