كيفية إعادة تعيين فئة باستخدام placment حذف / جديدة من قالب؟

StackOverflow https://stackoverflow.com/questions/488874

  •  20-08-2019
  •  | 
  •  

سؤال

ولدي تجمع فئة القالب مدير. عندما يحصل على إضافة كائن فئة إلى إدارة تجمع أود أن إعادة مرة أخرى إلى أنها الحالة الأولية. وأود أن استدعاء المدمر placment ومنشئ placment على ذلك حتى يحصل على إعادة تعيين كاملة عن المرة التالية التي يتم منحها من قبل إدارة تجمع. لقد حاول العديد من الطرق للحصول على هذا العمل ولكن أنا الحيرة. هنا هو مثال على ما لقد حاولت.

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
}

ولقد حاولت مجموعة من جمل مختلفة ولا شيء يبدو على العمل. القانون نفسه هو عبر منصة لذلك ينبغي تجميع باستخدام دول مجلس التعاون الخليجي (تحت مينغو أو لينكس أو ماك) وللنوافذ أنا لا تزال تستخدم ضد عام 2003.

هل كانت مفيدة؟

المحلول

وماذا عن:

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...
}

نصائح أخرى

والدافع له المكتبة بركة . قد يكون من الأسهل لمجرد استخدام لهم بدلا من الكتابة الخاصة بك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top