Cast von pointern
-
Hallo ich habe einen const uint16* pointer als wert meine funktion gibt soll aber einen normalen unit16* pointer zurück geben.Da bekomme ich aber einen fehler. Muss ich da irgend etwas casten?
-
C_Anfänger schrieb:
Hallo ich habe einen const uint16* pointer als wert meine funktion gibt soll aber einen normalen unit16* pointer zurück geben.Da bekomme ich aber einen fehler. Muss ich da irgend etwas casten?
Kurze Antwort: Hä?
Mittlere Antwort: Wie Bitte?
Lange Antwort: Was hindert dich daran, die Signatur der Funktion zu verändern, sodass keine
const
, sondern normale Werte zurückgegeben werden? Wenn das aus irgendeinem Grund nicht geht, kannst du immer noch:unsigend short*MyValue=(unsigned short*)Foo();
verwenden, um den
const
-Spezifizierer wegzukriegen.
-
Nach viermaligem Lesen sieht das, was du vorhast, so für mich so aus:
uint16* meinefunktion(); ... const uint16* meinzeiger = meinefunktion();
Und das ist natürlich kein Problem.
Der andere Fall ist kritischer, u.U. darfst du nämlich nicht den const-Qualifizierer wegcasten:const char* meinefunktion() { return "ein String"; // readonly } .. char* c = (char*) meinefunktion(); c[0]='d'; // Peng
-
yahendrik schrieb:
Und das ist natürlich kein Problem.
Der andere Fall ist kritischer, u.U. darfst du nämlich nicht den const-Qualifizierer wegcasten:Der Umgang mit Zeigern ist sowieso etwas 'gefährlich'. Das von dir beschriebene Problem kann durchaus auftauchen, wenn der Inhalt read-only ist.