هل هناك مؤشر ذكي يتم إظهار تلقائيا عند تدمير هدفه في C ++
-
05-09-2019 - |
سؤال
لقد وجدت QPointer.. وبعد هل هناك أي الآخرين؟
المحلول
تعزيز - ال weak_ptr
لديه بعض الميزات الجميلة التي تجعلها آمنة للاستخدام، إذا كنت تستخدم أيضا shared_ptr
. وبعد يمكنك الاحتفاظ weak_ptr
إشارة إلى مثيل يديره shared_ptr
أوقات الحياة. عندما تحتاج إلى استخدام المثيل الأساسي، تحويله إلى shared_ptr
مثيل باستخدام منشئ shared_ptr
الطبقة، أو lock
طريقة. ستفشل العملية إذا تم حذف المثيل الأساسي. الاستخدام هو مؤشر الخيط في نفس الموضة shared_ptr
صف دراسي:
shared_ptr<int> p(new int(5));
weak_ptr<int> q(p);
// some time later
if(shared_ptr<int> r = q.lock())
{
// use *r
}
نصائح أخرى
"Boost :: ضعيف_ptr" يعمل بشكل جيد حقا مع "دفعة :: Shared_ptr" (متوفر أيضا في TR1)
لا تنتمي إلى StackOverflow