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.


Log in to reply