Агрегат Qt c ++ 'std :: stringstream ss' має неповний тип і не може бути визначений


97

У моїй програмі є така функція, яка перетворює цілі числа у рядки:

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

Але коли я колись запускаю це, я отримую помилку:

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

Я не дуже впевнений, що це означає. Але якщо ви знаєте, як це виправити, або вам потрібен будь-який інший код, просто коментуйте. Дякую.


48
#include <sstream>
Managu

1
Окрім того, QString має статичну функцію для побудови рядка з числа. Це QString :: номер .
cgmb

Відповіді:


153

Напевно, у вас є декларація класу вперед, але ви не включили заголовок:

#include <sstream>

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

9

Як там написано, ви забуваєте друкувати #include <sstream>

#include <sstream>
using namespace std;

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

Ви також можете використовувати деякі інші способи перетворення intна string, наприклад

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

перевірити це!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.