Qt c ++ aggregate 'std :: stringstream ss' มีประเภทที่ไม่สมบูรณ์และไม่สามารถกำหนดได้


98

ฉันมีฟังก์ชันนี้ในโปรแกรมของฉันที่แปลงจำนวนเต็มเป็นสตริง:

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

แต่เมื่อใดที่ฉันเรียกใช้สิ่งนี้ฉันได้รับข้อผิดพลาด:

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

ฉันไม่แน่ใจจริงๆว่ามันหมายถึงอะไร แต่ถ้าคุณรู้วิธีแก้ไขหรือต้องการรหัสเพิ่มเติมโปรดแสดงความคิดเห็น ขอบคุณ.


49
#include <sstream>
Managu

1
นอกจากนี้ QString ยังมีฟังก์ชันคงที่สำหรับสร้างสตริงจากตัวเลข มันQString :: จำนวน
cgmb

คำตอบ:


157

คุณอาจมีการประกาศไปข้างหน้าของชั้นเรียน แต่ยังไม่ได้รวมส่วนหัว:

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

ตรวจสอบสิ่งนี้!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.