Der folgende Code kann mit zwei Fehlern in der Zeile 'func (& pobj);' "Kann nicht konvertieren X * *" zu 'const X * *' in Funktion main() "und" Typenkonflikt in Parameter 1 (wollte 'const X * *', bekam 'X * *') in der Funktion main() "Obwohl es die richtige Art ist, Zeigerparameter zu übergeben. Und auch über das Kommentieren dieser bestimmten Zeile, d. H. 'Func (& pobj);' und Auskommentierung der beiden darüber liegenden Zeilen, die einen neuen 'const' Zeiger 'pp' des erforderlichen Typs (im Parameter von func) deklarieren, aber immer noch einen Fehler in der Zeile, die 'pp' deklariert und zuweist, mit der Aussage 'Kann nicht konvertieren' X * * 'zu' const X * * 'in der Funktion main() ".Übergabe von 'const' Zeiger, der auf einen anderen Zeiger in C++ zeigt
using X = int;
void func(const X **);
int main() {
X *pobj = new X(58);
// const X **pp = &pobj; // ERROR
// func(pp);
func(&pobj); // ERROR
}
Ich glaube, dass dies der richtige Weg ist, konstanten Zeiger als Parameter zu übergeben, und ich verstehe einfach nicht, warum das Programm zu kompilieren, schlägt fehl. Kann jemand den Fehler im obigen Code aufzeigen und mir die richtige Logik/Syntax vorschlagen, wenn ich falsch liege? Danke im Voraus.
UPDATE: Diese Frage wurde als doppelt markiert, aber es hat nicht die Antwort, die das Problem zur Hand löst. Daher würde ich es lieben, wenn die Stack Overflow Community mir helfen würde, mein Problem hier zu lösen. Vielen Dank. diese
, dass das Problem für den Modulaufruf löst aber das hat uns zu ändern, ist es nicht möglich der Wert, auf den der Zeiger 'pobj' zeigt, der für mein Programm wesentlich ist (dies ist nur ein kleiner Teil davon, der den Fehler hat). Haben Sie eine Idee, dieses Problem zu lösen? Danke für die Antwort. – hecate
@hecate: Klingt so, als ob du deine Modul-API nicht korrekt definiert hast. Wenn Sie eine Sache ändern wollen, müssen Sie einen Zeiger auf eine modifizierbare Sache nehmen. Vielleicht überprüfe die andere Antwort. –
Beachten Sie, dass die zweite Lösung, die Sie im ursprünglichen Zeiger beibehalten haben, nicht funktioniert .. :-( – hecate