'Ungültige Konvertierung von Some_type ** in Const Some_type **'

8

Ich habe eine Funktion, die const some_type** als Argument benötigt ( 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* deklariert und initialisiert. Dann rufe ich die Funktion als f(&some_array) auf, und der Compiler (gcc) sagt:

%Vor%

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

    
petersohn 20.04.2010, 07:59
quelle

3 Antworten

11

Siehe: Warum kann ich eine char ** nicht an eine Funktion übergeben, die eine const char ** erwartet? aus der FAQ zu comp.lang.c.

    
jamesdlin 20.04.2010, 08:04
quelle
1

Sie haben ein paar Optionen, um herumzukommen, was jamesdlin in seiner Antwort umrissen hat.

Sie könnten eine Zwischenvariable verwenden.

%Vor%

Sie könnten die Parameter von f ändern.

%Vor%     
Matthew T. Staebler 20.04.2010 08:24
quelle
1

Wahrscheinlich müssen Sie einen weiteren Kontext angeben, z. B., ob das Argument Daten an die Funktion übergeben oder nicht (oder beides?)?

Versuchen Sie, Ihre Variable auch const zu machen:

%Vor%

Dies liest sich wie "some_array ist ein Zeiger auf einen const some_type". Der Code kann das Ding, auf das gezeigt wird, nicht ändern. Also müssen Sie Ihre Variable const deklarieren, bevor Sie sie an die Funktion übergeben.

(Bearbeitet ...)

    
fret 20.04.2010 08:07
quelle

Tags und Links