/ / Erstellen eines Alias ​​für einen konstanten Zeiger - c ++

Erstellen eines Alias ​​für einen konstanten Zeiger - C ++

Ich wollte wissen, warum die letzte Aussage nicht istgültig Ich bin etwas verwirrt mit der Information der Fehler und würde es begrüßen, wenn jemand den Fehler klären könnte. Mir ist bekannt, dass der folgende Code nichts bewirkt. Ich experimentiere gerade mit einem Versuch, meine Konzepte zu verbessern p

int a =12;
int * const p = &a; //p is a constant pointer to an int - This means it can change the contents of an int but the address pointed by p will remain constant and cannot change.
int *& const m = p; //m is a constant reference to a pointer of int type <---ERROR

Das sind die Fehler, die ich bekomme

main.cpp:17:18: error: "const" qualifiers cannot be applied to "int*&"
int *& const m = p;
^
main.cpp:17:22: error: binding "int* const" to reference of type "int*&" discards qualifiers
int *& const m = p;

Könnte jemand bitte erklären, was die beiden Fehler bedeuten, insbesondere der letzte und ob es möglich ist, einen Alias ​​für den Zeiger p zu erstellen.

Antworten:

5 für die Antwort № 1
"const" qualifiers cannot be applied to "int*&"

Referenzen können nicht erneut gebunden werdeninitialisiert. Es gibt also keinen Grund, ein const-Qualifikationsmerkmal auf eine Referenz zu setzen (nicht zu verwechseln mit einem Referenz-zu-const, was völlig normal ist), da es ohnehin nicht geändert werden kann. Das ist der Grund für den ersten Fehler.

Für den zweiten Fehler

binding "int* const" to reference of type "int*&" discards qualifiers

p ist ein const-Zeiger, aber Sie versuchen, einen Verweis auf eine Nicht-Konstante daran zu binden. Auf diese Weise können Sie den const-Zeiger über die Referenz ändern, was nicht zulässig ist.

Hier ist der richtige Weg, um darauf hinzuweisen p:

int * const& m = p;

3 für die Antwort № 2

Benutzen

int a =12;
int* const p = &a;
int* const& m = p;

Das definiert m ein Verweis auf eine sein const Zeiger auf einen int.


0 für die Antwort № 3

Betrachten Sie die zwei folgenden Zeilen:

int *const & const m = p; //m is a constant reference to a pointer of int type <---ERROR
int *const &  m = p; //m is a  reference to a pointer to a const int type <--- OK

Ihre Kommentare geben die Antwort. In Ihrem Code definieren Sie eine konstante Referenz auf einen Zeiger, der keinen Sinn macht. Sie benötigen einen Verweis auf einen Zeiger auf const, der meine zweite Zeile ist.