Aktuelle Quellcode:C++ int String-Konvertierung
string itoa(int i)
{
std::string s;
std::stringstream out;
out << i;
s = out.str();
return s;
}
class Gregorian
{
public:
string month;
int day;
int year; //negative for BC, positive for AD
// month day, year
Gregorian(string newmonth, int newday, int newyear)
{
month = newmonth;
day = newday;
year = newyear;
}
string twoString()
{
return month + " " + itoa(day) + ", " + itoa(year);
}
};
Und in meinem Haupt:
Gregorian date = new Gregorian("June", 5, 1991);
cout << date.twoString();
Ich erhalte diese Fehlermeldung:
mayan.cc: In function ‘int main(int, char**)’:
mayan.cc:109:51: error: conversion from ‘Gregorian*’ to non-scalar type ‘Gregorian’ requested
Weiß jemand, warum int String-Konvertierung schlägt hier fehl? Ich bin ziemlich neu in C++, aber ich bin mit Java vertraut. Ich habe viel Zeit darauf verwendet, nach einer einfachen Antwort auf dieses Problem zu suchen, bin aber momentan ziemlich ratlos.
Sie können von 'std :: string s loszuwerden;' in 'itoa' und nur' Rückkehr out.str(); '. Die Return-Zeichenfolge wird erstellt, bevor der Stringstream zerstört wird. Vernünftige Compiler werden wahrscheinlich in beiden Fällen den exakt gleichen Code erzeugen, aber das Extra temporär neigt dazu, Leuten, die Ihren Code betrachten, zu empfehlen, dass Sie die C++ - Scoping-Regeln nicht verstehen oder ihnen nicht vertrauen. –
Nicht verwandt, aber wollten Sie die Funktion 'toString()' nennen? – Neil
Aus Java stammend, wusste ich nicht, ob C++ bereits eine toString() -Methode hatte. Ich wollte es nicht überladen, wenn es nicht nötig wäre. –