Das Qt c ++ - Aggregat 'std :: stringstream ss' hat einen unvollständigen Typ und kann nicht definiert werden


96

Ich habe diese Funktion in meinem Programm, die Ganzzahlen in Zeichenfolgen konvertiert:

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

Aber wann immer ich dies starte, bekomme ich den Fehler:

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

Ich bin mir nicht sicher, was das bedeutet. Wenn Sie jedoch wissen, wie Sie das Problem beheben können, oder weiteren Code benötigen, kommentieren Sie dies einfach. Vielen Dank.


47
#include <sstream>
Managu

1
Abgesehen davon verfügt QString über eine statische Funktion zum Erstellen einer Zeichenfolge aus einer Zahl. Es ist QString :: number .
CGMB

Antworten:


152

Sie haben wahrscheinlich eine Vorwärtsdeklaration der Klasse, aber den Header nicht enthalten:

#include <sstream>

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

9

Wie es dort oben geschrieben steht, vergisst du zu tippen #include <sstream>

#include <sstream>
using namespace std;

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

Sie können auch einige andere Möglichkeiten nutzen , um zu konvertieren intzu string, wie

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

Überprüfen Sie dies!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.