обнуление статического вектора члена класса
|
|
Воскресенье, 29 Августа 2021 г. 21:32
+ в цитатник
rodion: Есть класс типа фабрика. При регистрации классов всё нормально, а вот при создании вектор m_Patern оказывается пустым, при этом поле m_GenId сохраняет своё значение. Не подскажите в чём дело? Стандарт 2003.
class TInitTSourcesFunctor
{
public:
TInitTSourcesFunctor()
{
TCreatorTran >::Registration(
new TBaseTransformationPatern >);
}
};
static TInitTSourcesFunctor init;
template
class TCreatorTran
{
public:
const TTypeDataOut Type;
public:
TCreatorTran():
Type(TType)
{
m_GenId += 0;
}
static unsigned GenId()
{
return ++m_GenId;
}
static void Registration(TBaseTransformation* a_T)
{
a_T->setId(GenId());
m_Patern.push_back(a_T);
}
static TBaseTransformation* Create(unsigned a_Id)
{
std::vector::iterator it = m_Patern.begin();
for (; it != m_Patern.end(); ++it)
{
if ((*it)->Id() == a_Id)
return (*it)->Create();
}
return NULL;
}
static std::string ChildName(unsigned a_Id)
{
std::string str;
std::vector::iterator it = m_Patern.begin();
for (; it != m_Patern.end(); ++it)
{
if ((*it)->Id() == a_Id)
return (*it)->Name();
}
return str;
}
static unsigned MaxId()
{
return m_GenId;
}
private:
TCreatorTran(const TCreatorTran &a_V);
TCreatorTran& operator = (const TCreatorTran &a_V);
private:
static unsigned m_GenId;
static std::vector m_Patern;
};
https://forum.sources.ru/index.php?showtopic=422685&view=findpost&p=3851394
Метки:
C/C++:
Прочее
-
Запись понравилась
-
0
Процитировали
-
0
Сохранили
-