Qt c ++ aggregate 'std :: stringstream ss' memiliki tipe yang tidak lengkap dan tidak dapat didefinisikan

97

Saya memiliki fungsi ini dalam program saya yang mengubah bilangan bulat menjadi string:

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

Tetapi ketika saya menjalankan ini saya mendapatkan kesalahan:

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

Saya tidak begitu yakin apa artinya. Tetapi jika Anda tahu cara memperbaikinya atau membutuhkan kode lagi, silakan komentar saja. Terima kasih.

tyty5949
sumber
48
#include <sstream>
Managu
1
Selain itu, QString memiliki fungsi statis untuk membangun string dari sebuah bilangan. Ini QString :: number .
cgmb

Jawaban:

154

Anda mungkin memiliki deklarasi maju kelas, tetapi belum menyertakan header:

#include <sstream>

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

Seperti tertulis di sana, Anda lupa mengetik #include <sstream>

#include <sstream>
using namespace std;

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

Anda juga dapat menggunakan beberapa cara lain untuk mengonversi intmenjadi string, seperti

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

periksa ini!

booiljoung
sumber