Der Modifikator const
in C++ vor Stern bedeutet, dass mit diesem Zeiger der Wert, auf den verwiesen wird, nicht geändert werden kann, während der Zeiger selbst auf etwas anderes gerichtet werden kann. In der untennichtkonstantes Zeigerargument zu einem const Doppelzeigerparameter
void justloadme(const int **ptr)
{
*ptr = new int[5];
}
int main()
{
int *ptr = NULL;
justloadme(&ptr);
}
justloadme
Funktion sollte nicht die ganzzahligen Werte zu bearbeiten erlaubt werden, durch die bestandene param hingewiesen (falls vorhanden), während es den int * Wert bearbeiten können (da die const nicht nach dem ersten Stern) , aber warum bekomme ich einen Compilerfehler in GCC und VC++?
GCC: Fehler: ungültige Umwandlung int**
-const int**
VC++: Fehler C2664: 'justloadme': Konvertierung des Parameters 1 von 'int **' in 'const int **'. Conversion verliert Qualifier
Warum heißt es, dass die Konvertierung Qualifier verliert? Ist es nicht der const
Qualifier? Darüber hinaus ist es nicht ähnlich zu strlen(const char*)
, wo wir eine nicht-const char*
http://www.parashift.com/c++-faq-lite/const-correctness.html#faq-18.17 – Anycorn