2012-04-23 23 views
5

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.

+2

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++. –

+0

No relacionado, pero ¿quiso nombrar la función 'toString()'? – Neil

+0

Viniendo de Java, no sabía si C++ ya tenía un método toString(). No quería sobrecargarlo si no era necesario. –

Respuesta

15

Está asignando un puntero Gregorian a un Gregorian. La caída de la new:

Gregorian date("June", 5, 1991); 
+1

+1 Soy demasiado lento :) – chris

+0

@chris parece que finalmente estoy aprendiendo a escribir :-) – juanchopanza

+0

Guau, esa fue una respuesta increíblemente rápida. Muchas gracias por una solución tan simple. –

Cuestiones relacionadas