تحويل المؤشر إلى المؤشر بين الفئات المشتقة والقاعدة؟

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

سؤال

بخصوص برنامج C ++ التالي:

class Base { };

class Child : public Base { };

int main()
{   
    // Normal: using child as base is allowed
    Child *c = new Child();
    Base *b = c;

    // Double pointers: apparently can't use Child** as Base**
    Child **cc = &c;
    Base **bb = cc;

    return 0;
}

تنتج GCC الخطأ التالي في بيان التعيين الأخير:

error: invalid conversion from ‘Child**’ to ‘Base**’

سؤالي في جزأين:

  1. لماذا لا يوجد تحويل ضمني من الطفل ** إلى قاعدة **؟
  2. يمكنني جعل هذا المثال يعمل مع فريق C على غرار أو أ reinterpret_cast. استخدام هذه القوالب يعني التخلص من كل نوع السلامة. هل هناك أي شيء يمكنني إضافته إلى تعريفات الفصل لجعل هذه المؤشرات يلقي ضمنيًا ، أو على الأقل عبارة التحويل بطريقة تسمح لي بالاستخدام static_cast في حين أن؟
هل كانت مفيدة؟

المحلول

حاول استخدام صفحة PageViewer WebPart!تم تصميمه لإظهار صفحة أخرى في ذلك (بشكل أساسي في IFRAME) الوثائق

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