Pointer auf template-Memberfunktion?
-
this->worker = std::bind(&C<BASE>::doit, this, std::placeholders::_1);
ist die Lösung!
Um eine Memberfunktion aufzurufen, benötigt man ja ein Objekt der Klasse (hier alsothis
) undstd::placeholders::_1
ist ein Platzhalter für den zu übergebenen Parameter.PS: Eine andere Alternative wäre eine Lambda-Funktion:
this->worker = [this](z) { C<BASE>::doit(z); }
-
@Th69 sagte in Pointer auf template-Memberfunktion?:
this->worker = std::bind(&C<BASE>::doit, this, y);
Klasse! Ich habe mit allen Varianten von
this
probiert, aber aufstd::bind
bin ich nicht gekommen...Danke!
-
Ich habe meinen Beitrag noch mal editiert (hatte mich bzgl.
y
vertan).
-
@Miq sagte in Pointer auf template-Memberfunktion?:
aber auf std::bind bin ich nicht gekommen.
Benutze Lamdas, nicht std::bind.
-
@Miq sagte in Pointer auf template-Memberfunktion?:
Klasse! Ich habe mit allen Varianten von this probiert, aber auf std::bind bin ich nicht gekommen...
Hättest du das von mir verlinkte Beispiel gelesen wärest du wohl schneller drauf gekommen. Oder auch nicht. Kannst du Englisch?
cppreference gibts auch auf Deutsch leider fehlt da aber der
<functional>
Header.
-
@Miq sagte in Pointer auf template-Memberfunktion?:
@Swordfish sagte in Pointer auf template-Memberfunktion?:
mcve.
Ja. Beim nächsten Mal
@Miq sagte in Pointer auf template-Memberfunktion?:
Hmmmh... Jetzt hänge ich an einer Variante des gleichen Problems fest.
Wer nicht hören will ...
-
@Swordfish sagte in Pointer auf template-Memberfunktion?:
Wer nicht hören will ...
Wie meinst Du das? Diesmal gab es doch ein minimales Beispiel, an dem man das Problem sehen konnte?
-
@eigenartig sagte in Pointer auf template-Memberfunktion?:
Hättest du das von mir verlinkte Beispiel gelesen wärest du wohl schneller drauf gekommen. Oder auch nicht. Kannst du Englisch?
cppreference gibts auch auf Deutsch leider fehlt da aber der
<functional>
Header.Ja, Englisch kann ich, ich habe aber konstant Probleme damit, cppreference zu verstehen. Das ist irgendwie ein Level zu hoch für mich, deswegen suche ich meist nach weiteren Beispielanwendungen.
Wie gesagt, das C++, das ich mal gelernt habe, war C++98, danach habe ich mich jahrelang nicht mehr damit befasst. Insofern ist C++11 und neueres komplettes Neuland für mich. Aber man lernt ja so nach und nach
-
@Miq sagte in Pointer auf template-Memberfunktion?:
Wie meinst Du das? Diesmal
ja, das hättest Du gleich bringen können.
-
@Miq sagte in Pointer auf template-Memberfunktion?:
Ja, Englisch kann ich, ich habe aber konstant Probleme damit, cppreference zu verstehen. Das ist irgendwie ein Level zu hoch für mich, deswegen suche ich meist nach weiteren Beispielanwendungen.
cppreference nutzt auch meist eine Sprache und viele Formulierungen, die sich genau so im C++-Standard finden. Das finde ich auch nicht immer leicht zu verstehen. Es lohnt sich aber es doch immer mal wieder zu versuchen. Die Sprache ist nämlich sehr präzise und führt zu einem tieferen Verständnis, wenn man es erstmal begriffen hat.