Ich habe eine private Variable definiert als:
%Vor%Ich versuche, einen Kopierkonstruktor zu schreiben, und ich muss die Konstanz wegwerfen, um dies zu tun, leider verstehe ich nicht, wie man const_cast benutzt.
Das versuche ich in meinem Kopierkonstruktor:
%Vor%Das funktioniert nicht ... Ich bin nicht sicher, was die Syntax dafür ist
Sie dürfen const_cast
Variablen, die tatsächlich const
sind, nicht verwenden. Dies führt zu undefiniertem Verhalten. const_cast
wird verwendet, um die Konstante aus Referenzen und Zeigern zu entfernen, die sich auf etwas beziehen, das nicht const
ist.
Also, das ist erlaubt:
%Vor% Es ist erlaubt, weil i
, dem Objekt, dem es zugewiesen ist, nicht const
ist. Das Folgende ist nicht erlaubt:
weil hier i
ist const
und Sie modifizieren es, indem Sie ihm einen neuen Wert zuweisen. Der Code wird kompiliert, aber sein Verhalten ist undefiniert (was von "es funktioniert einfach gut" bis "das Programm wird abstürzen" bedeuten kann).
Sie sollten konstante Datenelemente in den Initialisierern des Konstruktors initialisieren, anstatt sie im Rumpf der Konstruktoren zuzuordnen:
%Vor%In Ihrem Code versuchen Sie, diesen Zeiger anstelle der Variablen zu setzen. Sie können Folgendes versuchen:
%Vor%Tags und Links c++ const-cast