5

Warum muss ich den address-of-Operator verwenden, um einen Zeiger auf eine Elementfunktion zu erhalten?Warum muss ich den address-of-Operator verwenden, um einen Zeiger auf eine Elementfunktion zu erhalten?

+0

Was möchten Sie hier tun? Warum brauchen Sie die Adresse einer Mitgliedsfunktion, und wenn Sie so etwas hätten, was würden Sie damit machen? – tadman

+0

z.B. 'std :: bind (& A :: f, A());' – xmllmx

+1

Auch beim Übergeben einer Member-Funktion an 'std :: thread'. –

Antwort

3

Das erste ist mehr oder weniger das Richtige. Aber weil Nichtmitgliedsfunktionen implicit conversions zu Zeigern haben, ist & nicht notwendig. C++ macht diese Konvertierung, applies gleiche statische Funktionen.

Zitat aus cppreference:

ein L-Wert von Funktionstyp Timplizit auf einen prvalue Zeiger auf diese Funktion umgewandelt werden kann. Dies gilt nicht für nicht statische Member Funktionen, da lvalues, die sich auf nicht statische Elementfunktionen beziehen, nicht vorhanden sind.

Verwandte Themen