genannt Ich habe diese Frage an anderer Stelle gestellt und eine vage Antwort erhalten, und ich denke, es liegt daran, dass ich nicht verstehe, wie das Schlüsselwort new
verwenden.C++ - Funktion nicht ordnungsgemäß zurückgegeben: Zeichenfolge Destruktor wird
Das Projekt, an dem ich arbeite, ist nur etwas, um mir zu helfen, C++ zu lernen, aber ich komme aus einem Java-Wissen. Es ist nur eine Sammlung von Strukturen und Funktionen, die ich in einem textbasierten Spiel verwenden werde.
Die Funktion, mit der ich Probleme habe, ist getStats()
, die einige Werte von Variablen der Struktur Holz und die Struktur zurückgibt, von der es erbt.
/**
*Returns information regarding the status of the wood.
*@param the wood to retrieve.
*@return A string representing the stats.
*/
string getStats(wood toGet)
{
string toReturn;
//Substruct specific variables.
toReturn += "Type: ";
toReturn += toGet.type;
toReturn += "\nAge: ";
toReturn += toGet.age;
//Superstruct variables.
toReturn += "\nHeight: ";
toReturn += toGet.height;
toReturn += "\nWidth: ";
toReturn += toGet.width;
toReturn += "\nWeight: ";
toReturn += toGet.weight;
toReturn += "\nGeneric name: ";
toReturn += toGet.name;
toReturn += "\nState of Matter: ";
toReturn += toGet.stateOfMatter;
toReturn += "\nFlammable: ";
toReturn += toGet.flammable;
toReturn += "\n";
return toReturn;
}
Ich weiß, dass ich jetzt diese in einer dummen Art und Weise tue, werde ich es mit einer Reihe überarbeiten und einer Schleife, aber jetzt ich diese Methode verwenden. Auf der anderen Website, fragte ich sie auf sie mich informiert new
zu verwenden, aber wenn ich so tun:
string toReturn = new string;
es gibt mir eine Fehlermeldung:
conversion from
‘std::string* {aka std::basic_string *}’
to non-scalar type‘std::string {aka std::basic_string }’
requested
Die vollständige Quelle ist hier: http://pastebin.com/UawrwYj7
Die Ausgabe von einem Probenlauf ist unten.
Type: Birch
Age:
Height:
Width:
Weight: d
Generic name:
State of Matter: solid
Flammable:
Der beste Weg, in C++ zu verwenden 'new' ist überhaupt nicht alle. Die Sprache funktioniert nicht so. –
hinweis: du willst wahrscheinlich 'string getStats()' (es ist OO ..). Was ist das Problem mit Ihrem ursprünglichen Code? Warum willst du 'neu' benutzen? –
Der Code, den Sie haben, sieht perfekt aus; es gibt ** absolut keine Notwendigkeit, "neu" zu verwenden **. Funktioniert dieser Code korrekt für Sie? –