رموز غير محددة: "vtable" و "typeinfo"
في الكود المقدم، يظهر خطأ في الارتباط مع الرسائل التالية:
Undefined symbols: "vtable for Obstacle", referenced from: Obstacle::Obstacle()in Myworld.o "typeinfo for Obstacle", referenced from: typeinfo for RECTANGLEin RECTANGLE.o typeinfo for CIRCLEin CIRCLE.o
فهم "vtable" و "typeinfo"
حل الخطأ
السبب الجذري لهذا الخطأ هو على الأرجح أن الفئة الأساسية المجردة عقبة لا تحتوي على - وظائف افتراضية خالصة. عندما تعلن فئة ما عن وظيفة افتراضية خالصة (طريقة باطلة افتراضية () = 0؛)، فهذا يدل على أن الفئات المشتقة يجب أن تتجاوز التنفيذ.إذا قمت بتحديد وظائف افتراضية غير خالصة في Obstacle، فإن المترجم تتوقع العثور على تطبيقاتها إما في الفئة الأساسية أو في الفئات المشتقة. ومع ذلك، إذا لم يتم توفير هذه التطبيقات، يقوم المترجم بإنشاء بنيات داخلية (vtable وtypeinfo) تعتمد على تلك الوظائف. عند الارتباط، تؤدي الوظائف المفقودة إلى أخطاء رمز غير محددة.حللحل هذه المشكلة، تأكد من الإعلان عن جميع الأساليب الافتراضية في الفئة الأساسية المجردة عقبة. كوظائف افتراضية خالصة. وهذا يفرض على الفئات المشتقة تجاوز هذه الأساليب وتنفيذها. ومن خلال القيام بذلك، سيتم توفير تطبيقات الطريقة الافتراضية الصحيحة، ويجب أن تنجح عملية الربط دون أخطاء الرموز غير المحددة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3