O agregado Qt c ++ 'std :: stringstream ss' tem um tipo incompleto e não pode ser definido

97

Tenho esta função em meu programa que converte inteiros em strings:

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

Mas sempre que executo isso, recebo o erro:

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

Não tenho certeza do que isso significa. Mas se você souber como consertar ou precisar de mais algum código, por favor, comente. Obrigado.

tyty5949
fonte
48
#include <sstream>
Managu
1
Como um aparte, QString tem uma função estática para construir uma string a partir de um número. É QString :: number .
cgmb de

Respostas:

153

Você provavelmente tem uma declaração de encaminhamento da classe, mas não incluiu o cabeçalho:

#include <sstream>

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

Como está escrito lá, você se esquece de digitar #include <sstream>

#include <sstream>
using namespace std;

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

Você também pode usar outras maneiras de converter intpara string, como

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

verifique isso!

Booiljoung
fonte