Agregat Qt c ++ „std :: stringstream ss” ma niepełny typ i nie można go zdefiniować

98

Mam tę funkcję w moim programie, która konwertuje liczby całkowite na ciągi:

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

Ale kiedy to uruchamiam, pojawia się błąd:

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

Nie bardzo wiem, co to oznacza. Ale jeśli wiesz, jak to naprawić lub potrzebujesz więcej kodu, po prostu skomentuj. Dzięki.

tyty5949
źródło
48
#include <sstream>
Managu
1
Nawiasem mówiąc, QString ma funkcję statyczną do konstruowania ciągu znaków z liczby. To QString :: number .
cgmb

Odpowiedzi:

155

Prawdopodobnie masz przednią deklarację klasy, ale nie zawierałeś nagłówka:

#include <sstream>

//...
QString Stats_Manager::convertInt(int num)
{
    std::stringstream ss;   // <-- also note namespace qualification
    ss << num;
    return ss.str();
}
Luchian Grigore
źródło
9

Jak tam jest napisane, zapominasz o wpisaniu #include <sstream>

#include <sstream>
using namespace std;

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

Możesz także użyć innych sposobów konwersji intna string, na przykład

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

sprawdź to!

booiljoung
źródło