我試圖讓一個類作爲參數在構造函數中使用一個lambda函數,並且我希望這個函數能夠成爲該類的朋友。對於類的代碼看起來是這樣的:如何製作一個lambda函數的類的朋友?
using func = std::function<void(void)>;
class foo
{
public:
foo(func f)
{
this->f = f;
}
func f;
private:
int value_I_want_to_modify; //an int I want to change from the function I've passed in the constructor
}
而在main()
我會寫這樣的事:
int main()
{
//this will give an error because I cannot access private members from outside class
foo v
{
[&v](void) { v.value_I_want_to_modify = 0 };
}
}
現在我想的功能,以交朋友的類,但我可以」找到一個方法來做到這一點。
如何通過參考lambda傳遞int來代替? – jaggedSpire
讓任何老的拉姆達成爲你的朋友是讓每一個班級成爲你的朋友的一種奇特的方式,因爲他們都可以創建lambda表達式並修改你的班級的膽量。你也可以讓所有的成員變量公開。 – jaggedSpire
拉姆達應該是一個扔掉的東西。如果你需要它足夠的地方,你需要友誼,恕我直言,你需要一個完整的命名對象,而不是一個lambda。 – NathanOliver