Qt c ++ aggregate 'std :: stringstream ss' tiene un tipo incompleto y no se puede definir

96

Tengo esta función en mi programa que convierte enteros en cadenas:

    QString Stats_Manager::convertInt(int num)
    {
        stringstream ss;
        ss << num;
        return ss.str();
    }

Pero cada vez que ejecuto esto, aparece el error:

aggregate 'std::stringstream ss' has incomplete type and cannot be defined

No estoy seguro de lo que eso significa. Pero si sabe cómo solucionarlo o necesita más código, simplemente comente. Gracias.

tyty5949
fuente
47
#include <sstream>
Managu
1
Aparte, QString tiene una función estática para construir una cadena a partir de un número. Es QString :: número .
cgmb

Respuestas:

153

Probablemente tenga una declaración hacia adelante de la clase, pero no ha incluido el encabezado:

#include <sstream>

//...
QString Stats_Manager::convertInt(int num)
{
    std::stringstream ss;   // <-- also note namespace qualification
    ss << num;
    return ss.str();
}
Luchian Grigore
fuente
9

Como está escrito allí, te olvidas de escribir #include <sstream>

#include <sstream>
using namespace std;

QString Stats_Manager::convertInt(int num)
{
   stringstream ss;
   ss << num;
   return ss.str();
}

También puede utilizar otras formas para convertir inta string, como

char numstr[21]; // enough to hold all numbers up to 64-bits
sprintf(numstr, "%d", age);
result = name + numstr;

¡mira esto!

booiljoung
fuente