web-dev-qa-db-fra.com

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

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 ceci, j'obtiens l'erreur:

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

Je ne suis pas vraiment sûr de ce que cela signifie. Mais si vous savez comment le réparer ou si vous avez besoin de plus de code, merci de le commenter. Merci.

85
tyty5949

Vous avez probablement une déclaration forward 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();
}
134
Luchian Grigore

Comme si c'était écrit là-haut, vous oubliez 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 méthodes pour convertir int en string, comme

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

vérifier this!

6
booiljoung