Übergabe eines const-Zeigers an eine static-Memberfunktion



  • Hi, warum kommt bei folgendem Code der fehler

    static void setVorstand(const Mitglied *vorstand)
    	{
    		ptrVorstand = vorstand;
    	}
    

    error C2440: '=' : '
    const class Mitglied *' kann nicht in 'class Mitglied *' konvertiert werden
    Durch die Konvertierung gehen Qualifizierer verloren

    Check ich nich...

    Wenn ichs so schreib

    static void setVorstand(Mitglied *vorstand)
    	{
    		ptrVorstand = vorstand;
    	}
    

    funktioniert alles

    gruß wolb



  • Bei der oberen Funktion nimmst du einen Zeiger auf ein konstantes Objekt von Mitglied und weist das so wie es aussieht an einen Zeiger auf ein nicht-konstantes Objekt zu. Das geht natürlich nicht, da man das konstante Objekt über den nicht konstanten Zeiger ändern könnte.

    EDIT: Also entweder die untere Funktion benutzen oder ptrVorstand als const Mitglied *ptrVorstand deklarieren (Falls das so wie du es programmieren willst geht)

    Felix



  • Ich denke es liegt daran dass du bei operator = kein const-Pointer übergibst.

    Achja und eine statische Methode kannst du natürlich nicht auf die Attribute zugreifen.

    Gruß


Anmelden zum Antworten