У меня есть шаблон класса менеджера пула. Когда объект класса добавляется обратно в диспетчер пула, я хотел бы вернуть его в исходное состояние. Я хотел бы вызвать деструктор и конструктор размещения на нем, чтобы он полностью сбрасывался при следующей выдаче менеджером пула. Я пробовал много способов заставить это работать, но я в тупике. Вот пример того, что я пробовал.
template <class T>
void PoolClass<T>::ReleaseToPool(T *obj)
{
obj->~T(); //call destructor
obj->T::T(); //call constructor
//also tried new (obj)T(); //but this doesn't seem to work either
//then misc code to add a pointer to the object
//to my list of available objects for re-use later
}
Я пробовал кучу разных синтаксисов, но ни один из них не работает. Сам код является кроссплатформенным, поэтому должен компилироваться с использованием gcc (под mingw, linux или mac), а для windows я все еще использую vs 2003.