11 Stimmen

Ungültige Umwandlung von some_type** in const some_type**'.

Ich habe eine Funktion, die Folgendes erfordert const some_type** als Argument ( some_type ist eine Struktur, und die Funktion benötigt einen Zeiger auf ein Array dieses Typs). Ich habe eine lokale Variable vom Typ some_type* und initialisiert sie. Dann rufe ich die Funktion als f(&some_array) , und der Compiler (gcc) sagt:

error: invalid conversion from ‘some_type**’ to ‘const some_type**’

Was ist hier das Problem? Warum kann ich eine Variable nicht in const konvertieren?

13voto

jamesdlin Punkte 63159

1voto

fret Punkte 1525

Sie müssen wahrscheinlich etwas mehr Kontext angeben, zum Beispiel ist das Argument übergeben Daten in oder aus (oder beides?) die Funktion?

Versuchen Sie auch, Ihre Variable konstant zu machen:

some_type const *some_array = ....;

Dies liest sich wie "some_array ist ein Zeiger auf einen const some_type". Der Code kann den Gegenstand, auf den er zeigt, nicht verändern. Sie müssen also Ihre Variable als const deklarieren, bevor Sie sie an die Funktion übergeben.

(Bearbeitet...)

1voto

Sie haben einige Möglichkeiten, um das zu umgehen, was jamesdlin in seiner Antwort beschrieben hat.

Sie könnten eine Zwischenvariable verwenden.

some_type const* const_some_array = some_array;
f(&const_some_array);

Sie können die Parameter von f .

void f(some_type const* const* some_array);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X