C++ - lambda - capture-member-variable

Ich habe eine Klasse, die Funktion Zeiger auf kernel-Funktion, die das ändern können von außerhalb.

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

}

Wie kann ich erreichen, das Verhalten ist "vorgestellt", wie zB. Lesen Sie der Klasse Variablen innerhalb der lambda. Ich kann es umgehen, indem übergeben f im inneren und schreiben f.bar.i, das ist aber keine sehr schöne Lösung.

  • Was ist falsch mit [&f]() { return f.i * f.i; }?
  • Ich habe die Frage bearbeitet
  • Also Sie wollen im Grunde zu nennen f.kernel() und kernel sollten automatisch verbunden werden f wie es war, eine member-Funktion?
  • ja.. im Grunde das ist, was ich will
  • Warum ist es nicht einfach eine member-Funktion dann?
  • Ich muss dynamicly ändern Sie die Funktion von außen

InformationsquelleAutor Martin Perry | 2015-10-03
Schreibe einen Kommentar