Verstehen Sie Elementfunktionszeiger? Kann es in Void* umgewandelt werden? Warum?

        Ein Mitgliedsfunktionszeiger ist ein Zeiger auf eine Mitgliedsfunktion. Da der Mitgliedsfunktionszeiger beim Aufruf die Adresse eines Objekts bereitstellen muss, unterscheidet sich sein Typ von dem eines gewöhnlichen Funktionszeigers. Wenn Sie in C++ Member-Funktionszeiger verwenden, müssen Sie einen Zeiger oder eine Referenz auf ein Objekt verwenden.

        Mitgliedsfunktionszeiger können in void* konvertiert werden, diese Konvertierung ist jedoch unsicher. Void ist ein allgemeiner Zeigertyp, der auf jeden Datentyp zeigen kann, während ein Mitgliedsfunktionszeiger ein spezifischer Zeigertyp ist, der auf eine bestimmte Mitgliedsfunktion zeigt. Daher kann die Konvertierung eines Memberfunktionszeigers in „void“ zu einem Typfehler oder einer Zugriffsverletzung führen.

        Wenn Sie eine Zeigertypkonvertierung durchführen, sollten Sie versuchen, die Verwendung von void* zu vermeiden und stattdessen spezifischere Typen zu verwenden, um die Typsicherheit zu gewährleisten. Wenn Sie einen Mitgliedsfunktionszeiger als Parameter übergeben oder einen Wert zurückgeben müssen, können Sie erwägen, eine Funktionsvorlage oder std::function zu verwenden, um den Mitgliedsfunktionszeiger zu kapseln.

おすすめ

転載: blog.csdn.net/SYC20110120/article/details/133203798