Mam klasę, która ma wskaźnik funkcji do funkcji jądra, która może zmieniać się z zewnątrz.C++ lambda - zmienna składowa przechwytywania
class Bar
{
public:
int i;
}
class Foo
{
public:
std::function<double()> kernel;
Bar bar;
};
int main()
{
Foo f;
f.kernel = []() -> double { return i * i; }; //this is not working obviously
}
Jak uzyskać zachowanie "prezentowane", np. odczytaj zmienne klasy wewnątrz lambda. Mogę ominąć to przechodząc f
w środku i napisać f.bar.i
, ale to nie jest dobre rozwiązanie.
Co jest nie tak z '[& f]() {return f.i * f.i; } '? –
@KerrekSB Poddałem edycji pytanie –
Więc zasadniczo chcesz wywołać 'f.kernel()' i 'kernel' powinien automatycznie być związany z' f' tak, jakby był funkcją członka? – dhke