C++ - [Error] invalid conversion from 'const char*" to 'char*' - was tun?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Bei dem Beispiel mit "x" und "y" würde stehen: "... to 'char'" (ohne "*") und nicht "... to 'char *'" (mit "*").

Dein Problem ist, dass man bei Zeigern in C und C++ durch ein "const" angeben kann, dass die Daten, wohin der Zeiger zeigt, nicht verändert werden dürfen. Beispiel:

const char *a;
char *b;

Der Zeiger "a" zeigt auf Daten, die nicht verändert werden dürfen, während Zeiger "b" auf Daten zeigt, die verändert werden dürfen.

Folgender Befehl ist dann erlaubt:

a = b;

"a" und "b" zeigen dann auf dieselben Daten, jedoch dürfen diese nur mit einem Zugriff über die Variable "b" (und nicht über "a") verändert werden.

Folgender Befehl ist nicht erlaubt, da man dadurch Daten, die eigentlich nicht verändert werden dürfen, verändern kann:

b = a;

Man kann dem C- oder C++-Compiler aber auch explizit sagen, dass er das ignorieren soll. Dazu wird ein so-genannter "Cast" verwendet:

b = (char *)a;

Bei aktuellen C++-Versionen gibt es (im Gegensatz zu C) noch spezielle Varianten von Casts (wie z.B. den "const_cast").

Das Problem kann schon in folgendem Fall auftreten:

void eineFunktion(char *argument);
...
    eineFunktion("Hallo");

Die Lösung würde dann folgendermaßen aussehen:

    eineFunktion((char *)"Hallo");

Phantom6208 
Fragesteller
 08.12.2014, 16:22

Hmm, das ist sicherlich hilfreich, jedoch ist mein PC jetzt schrott. Er stank ein wenig verbrannt. Ich arbeite jetzt gerade mit einem alten build und ich denke mittlerweile ist dieser bereits besser als der andere, und ich werde es nie ausprobieren können. (vielleicht doch)

Danke für deine Zeit!

0

Das sieht mir nach einer fehlgeschlagenen automatischen Konvertierung des Präprozessors aus aber ich bin mir nicht sicher. Ich rate dir ein C++ Forum an aber gutefrage.net ist definitiv der falsche Ort für sowas...