Агрегат 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 01

1
Кроме того, QString имеет статическую функцию для построения строки из числа. Это QString :: number .
cgmb 01

Ответы:


154

Вероятно, у вас есть предварительное объявление класса, но не включен заголовок:

#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.