البرمجة

تصحيح خطأ في تعريف قالب C++: ‘myClass’ ليست فئة أو مساحة أو تعداد

في السعي لفهم القوالب في لغة البرمجة C++، تظهر لديك رسالة خطأ تفيد بأن ‘myClass’ ليست فئة أو مساحة أو تعداد. لفهم وحل هذا الخطأ، دعنا نلقي نظرة على الشيفرة التي كتبتها.

في البداية، يبدو أنك تحاول تعريف فئة مشتقة من الفئة std::stack باسم myClass، وتقوم بتعريف الدوال الأساسية لها، وهي البناء والنسخ والتدمير وعامل الربط. إلا أن هناك خطأ في تعريف الدالة البنائية.

تبدو الدالة البنائية كالتالي:

cpp
template<typename T> myClass::myClass(void) : std::stack(){ }

لكن، يجب أن يتم تحديد النوع T في جميع الأماكن التي يتم فيها استخدامه. لذلك، يجب تحسين التعريف كما يلي:

cpp
template<typename T> myClass::myClass(void) : std::stack() { }

الفرق الرئيسي هو إضافة بعد myClass في تعريف الدالة. هذا يحدد أن myClass هو قالب (template) أيضًا ويستخدم النوع T الذي يمرر إليه.

بالنسبة للخطأ الذي تواجهه، يبدو أن المترجم يشير إلى أن الدالة myClass::myClass(void) ليست معرفة بشكل صحيح. بتصحيح التعريف كما تم ذكره أعلاه، يجب أن يتم التعامل مع هذا الخطأ.

بعد التعديل، يمكنك محاولة إعادة تشغيل الترجمة باستخدام الأمر:

bash
clang++ -Wall -Werror -Wextra -c test.cpp

تأكد من حفظ التعديلات وتجربة الترجمة مرة أخرى، ويجب أن يتم الترجمة بنجاح بدون أخطاء.

المزيد من المعلومات

في سعيك لفهم استخدام القوالب في لغة البرمجة C++، يظهر لك خطأ في الترجمة يفيد بأن ‘myClass’ ليست فئة أو مساحة أو تعداد. هذا الخطأ يحدث بسبب خطأ في تعريف الدالة البنائية للفئة المشتقة myClass.

في الشيفرة التي قدمتها:

cpp
template<typename T> myClass::myClass(void) : std::stack() { }

هنا، يجب أن تحدد الفئة المشتقة myClass أنها قالب أيضًا وتحديد النوع T الذي يتم تمريره. يتم ذلك عن طريق إضافة بعد myClass في تعريف الدالة البنائية، كما يلي:

cpp
template<typename T> myClass::myClass(void) : std::stack() { }

هذا التعديل يتيح للكمبايلر فهم أن myClass هي فئة قالب، وأن النوع T هو النوع الذي سيتم تحديده عند استخدام الفئة.

بعد أن تقوم بإجراء هذا التعديل، يجب أن يتم ترجمة الشيفرة بنجاح. يُفضل أيضًا التأكد من وجود تعريف صحيح للدالة main أو الدالة الرئيسية في البرنامج الخاص بك لضمان عمل الشيفرة بشكل صحيح.

مقالات ذات صلة

زر الذهاب إلى الأعلى

هذا المحتوى محمي من النسخ لمشاركته يرجى استعمال أزرار المشاركة السريعة أو تسخ الرابط !!