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.


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();
}

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!

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.