actual código fuente:C++ int para la conversión de cadenas
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);
}
};
Y en mi principal:
Gregorian date = new Gregorian("June", 5, 1991);
cout << date.twoString();
estoy recibiendo este error:
mayan.cc: In function ‘int main(int, char**)’:
mayan.cc:109:51: error: conversion from ‘Gregorian*’ to non-scalar type ‘Gregorian’ requested
¿Alguien sabe por qué int a la conversión de cadena está fallando aquí? Soy bastante nuevo en C++ pero estoy familiarizado con Java, he pasado mucho tiempo buscando una respuesta directa a este problema, pero actualmente estoy perplejo.
Usted puede deshacerse de 'std :: string s;' en '' itoa' y simplemente volver out.str(); '. La cadena de retorno se construirá antes de que se destruya la secuencia de cadenas. Los compiladores razonables probablemente producirán exactamente el mismo código en ambos casos, pero el extra temporal tiende a sugerirle a las personas que miran su código que usted no comprende o no confía en las reglas de determinación del alcance de C++. –
No relacionado, pero ¿quiso nombrar la función 'toString()'? – Neil
Viniendo de Java, no sabía si C++ ya tenía un método toString(). No quería sobrecargarlo si no era necesario. –