سؤال

أفعل ديناميكاست وتريد التحقق مما إذا كان المدلى بها ينجح.

أقوم بإجراء فحص أساسي للمؤشر الفارغ الآن.مثل هذا:

A *temp_ptr = dynamic_cast<A *>(obj_ptr);
if( (temp_ptr) && (temp_ptr->some_function()))
{
      // do something if the function returns true
}
else
{
      // cast failed or function returns false
      // continue with normal execution
}

هل هذا جيد أم أحتاج إلى استخدام التأكيد ?كل ما يهمني هو أن وظيفة معينة.هل هناك أي فحص آخر يجب أن أستخدمه ?

فإنه تمرير مراجعة التعليمات البرمجية ?

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

المحلول

التحقق من نتائج dynamic_cast حماية التعليمات البرمجية من القيام بالأشياء بشكل غير صحيح.تأكيد يحمي البرنامج من المبرمجين كتابة الأشياء بشكل غير صحيح.

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

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