У меня есть статический метод, который должен вернуть следующий доступный идентификатор.Несколько статических членов в других классах вызывают эту функцию, поэтому каждому из них присваивается другой идентификатор.Однако, когда я печатаю назначенные значения, я не получаю «id0», «id1», а просто символ, такой как «*».Я использую этот код:
int A::i = 0; //static member
std::string A::id()
{
std::stringstream sst;
sst<< "id" << A::i;
i++;
return sst.str(); //i've tried to return a const char* too, but doesnt work either
}
//assigning id's in several classes like this:
const char* B::id = A::id().c_str();
const char* C::id = A::id().c_str();
//printing them in the main function:
std::cout << B::id << " " << C::id << "\n";
Я не понимаю, почему приведенный выше код не работает.Когда я выполняю следующий код, выводится ожидаемый результат «id10»:
static std::string gt()
{
std::stringstream ss;
ss << "id" << 10;
return ss.str();
}