std::bind der Klasse member-Funktion

Habe ich diesen code:

#include <iostream>
#include <functional>

struct Foo
{
        int get(int n) { return 5+n; }
};

int main()
{
        Foo foo;
        auto L = std::bind(&Foo::get, &foo, 3);

        std::cout << L() << std::endl;

        return 0;
}

Scheint, dass diese:

auto L = std::bind(&Foo::get, &foo, 3);

ist equivalento zu:

auto L = std::bind(&Foo::get, foo, 3);

Warum?

  • Das ist es nicht. Man bindet ein Zeiger, der andere bindet eine Kopie.
  • Für was es Wert ist, Sie können auch einen intelligenten Zeiger (jede Art, die operator-> zurückgeben foo*) als zweites argument. Versuchen Sie es mit einem std::shared_ptr.
  • duplizieren:stackoverflow.com/questions/15264003/... Aber ich mag beide Antworten...
Schreibe einen Kommentar