Ich habe den folgenden Code geschrieben, um eine Dezimalzahl in base2 umzuwandeln. wahrscheinlich nicht der beste, aber es funktionierte bei Eclipse. Wenn ich jedoch versuche, es auf Visual Studio auszuführen, erhalte ich diese Fehlermeldung in Zeile 10 (hervorgehoben): "Ausdruck wurde nicht zu einer Konstante ausgewertet". Warum ist das so?
%Vor%Ist ein Array variabler Länge und ist nicht Standard in C ++. Einige Compiler wie GCC erlauben sie als Erweiterungen, aber MSVS wird sie nicht kompilieren.
Um ein dynamisches Array zu erhalten, müssen Sie einen Zeiger und new
Oder noch besser: Überarbeiten Sie die Funktion so, dass Sie ein std::string
verwenden, das die Speicherverwaltung übernimmt für dich.
sizeOfRetNum
ist kein konstanter Wert - mit anderen Worten, sein Wert ist zur Kompilierzeit nicht bekannt.
Wenn Sie Speicher reservieren und den Wert bis zur Laufzeit nicht kennen, müssen Sie die dynamische Speicherzuweisung verwenden. Dies geschieht in C ++ mit operator new
. Der Speicher, den Sie sich selbst mit new
zuweisen, muss ebenfalls mit delete
oder delete[]
freigegeben werden.
Ändern Sie char ansString[sizeOfRetNum];
in char * ansString = new char[sizeOfRetNum];
. Vergessen Sie nicht, delete [] ansString;
aufzurufen, bevor die Funktion zurückkehrt, oder Sie haben einen Speicherverlust.
Tags und Links c++