verdächtige zeigerumwandlung



  • [C++ Warnung] Unit1.cpp(25): W8075 Verdächtige Zeigerumwandlung

    String gibMirString(long a)
    {
      char buffer[10];
      sprintf(buffer, "%g", a);
      printf("%s\n", buffer);
      return buffer; // An dieser Stelle
    }
    

    Die Hilfe vom BCB hilft mir da nicht weiter... Sie sagt nur:

    (Die Kommandozeilenoption zur Unterdrückung dieser Warnung lautet -w-voi)

    Ihre Quelltextdatei deklarierte den Rückgabewert der aktuellen Funktion als void, der Compiler fand jedoch eine return-Anweisung mit einem Wert.

    Der Wert der return-Anweisung wird ignoriert.

    Beispiel:

    // Muß in einer "C"-Datei sein. In einer "C++"-Datei würde ein Fehler erzeugt.
    void foo()
    {
    return 0; // Von einer void-Funktion kann kein Wert zurückgegeben werden.
    }

    das ist aber bei mir nicht der fall. 🙄

    gute n8!



  • ööh, wenn du nen string zurückgibst dann verwende doch auch in der funktion einen string und gib nicht einen pointer auf ein array zurück?!

    du benutzt übrigens keine stl-strings, ist wahrscheinlich irgendwas bcb spezifisches.
    wie wärs wenn du erstmal versuchst c++ zu lernen bevor du dir eine gui zusammenklickst und damit nichts hinbekommst?



  • @bertold
    Besitzt denn String einen ctor für 'const char*'? Und wie ist String überhaupt definiert?
    Und bist du auf String aufgrund des GUI Handlings angewiesen? Wenn nicht, dann solltest du lieber auf std::string zurückgreifen. Dann klappts auch mit deinem Rückgabewert. Zudem kann man dann die Umwandlung noch einfacher über String Streams machen.

    btw:
    Ist dir eigenlich klar, dass sprintf aufgrund der "%g" Formatspezifikation einen Fliesskommawert und keinen Ganzzahlwert erwartet?



  • Hallo

    zumal die Umwandlung von long nach (Ansi)String gar kein printf benötigt. Du solltest dich entscheiden, ob VCL oder C++ schreiben willst. Und dann eventuell das Forum wechseln.

    bis bald
    akari



  • std::string MakeItString(long a)
    {
      std::string STR;
      STR << a;
      return STR;
    }
    

    [C++ Fehler] Unit1.cpp(24): E2094 'operator<<' ist im Typ 'string' für Argumente des Typs 'long' nicht implementiert

    wird wohl nix mit string streams 💡



  • Hallo

    #include<iostream>
    #include<sstream>
    
    std::string MakeItString(long a)
    {
      std::string STR;
      stringstream Buffer;
      Buffer << a;
      Buffer >> STR;
      return STR;
    }
    

    such mal im Forum oder bei Google nach lexical_cast, das ist ein template, das genau das für alle Typen, die stringstream unterstützt, einsetzt.

    bis bald
    akari



  • Um akari's Version noch etwas zu vereinfachen

    #include <iostream>
    #include <sstream>
    
    std::string MakeItString(long a)
    {
      std::stringstream Buffer;
      Buffer << a;
      return Buffer.str();
    }
    

Anmelden zum Antworten