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(); }