English 中文(简体)
如何使用模板中的放置删除/新操作重置类?
原标题:
  • 时间:2009-01-28 18:58:56
  •  标签:

我有一个池管理器模板类。将类对象添加回池管理器时,我希望将其重置回其初始状态。我想调用它的初始化析构函数和初始化构造函数,以便在下一次由池管理器发放时完全重置它。我尝试了许多方法来使其工作,但我被卡住了。这是我尝试过的一个例子。

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。

最佳回答

怎么样? (Zěnme yàng?)

template <class T>
void PoolClass<T>::ReleaseToPool(T *obj)
{
    obj->~T();                  //call destructor
    obj = new ((void *)obj)T(); //call constructor

    // add a pointer to the object to the list...
}
问题回答

Boost有一个池(Pool)库。使用他们的库可能比编写自己的库更容易。





相关问题
热门标签