L'agrégat Qt C ++ 'std :: stringstream ss' a un type incomplet et ne peut pas être défini

97

J'ai cette fonction dans mon programme qui convertit les entiers en chaînes:

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

Mais chaque fois que je lance cela, j'obtiens l'erreur:

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

Je ne sais pas vraiment ce que cela signifie. Mais si vous savez comment le réparer ou si vous avez besoin de plus de code, veuillez simplement commenter. Merci.

tyty5949
la source
48
#include <sstream>
Managu
1
En passant, QString a une fonction statique pour construire une chaîne à partir d'un nombre. C'est QString :: number .
cgmb

Réponses:

153

Vous avez probablement une déclaration avant de la classe, mais vous n'avez pas inclus l'en-tête:

#include <sstream>

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

Comme c'est écrit là-haut, tu oublies de taper #include <sstream>

#include <sstream>
using namespace std;

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

Vous pouvez également utiliser d'autres façons de convertir intà string, comme

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

vérifiez ceci!

booiljoung
la source