Qt c ++ aggregate 'std :: stringstream ss' ha un tipo incompleto e non può essere definito


97

Ho questa funzione nel mio programma che converte gli interi in stringhe:

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

Ma ogni volta che lo eseguo ottengo l'errore:

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

Non sono proprio sicuro di cosa significhi. Ma se sai come risolverlo o hai bisogno di altro codice, per favore commenta. Grazie.


48
#include <sstream>
Managu

1
Per inciso, QString ha una funzione statica per costruire una stringa da un numero. È QString :: numero .
cgmb

Risposte:


153

Probabilmente hai una dichiarazione anticipata della classe, ma non hai incluso l'intestazione:

#include <sstream>

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

9

Come se fosse scritto lassù, ti dimentichi di digitare #include <sstream>

#include <sstream>
using namespace std;

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

Puoi anche usare altri modi per convertire intin string, come

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

controlla questo!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.