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.


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();
}

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!

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.