تصحيح خطأ في تعريف قالب C++: ‘myClass’ ليست فئة أو مساحة أو تعداد
في السعي لفهم القوالب في لغة البرمجة C++، تظهر لديك رسالة خطأ تفيد بأن ‘myClass’ ليست فئة أو مساحة أو تعداد. لفهم وحل هذا الخطأ، دعنا نلقي نظرة على الشيفرة التي كتبتها.
في البداية، يبدو أنك تحاول تعريف فئة مشتقة من الفئة std::stack
باسم myClass
، وتقوم بتعريف الدوال الأساسية لها، وهي البناء والنسخ والتدمير وعامل الربط. إلا أن هناك خطأ في تعريف الدالة البنائية.
-
حل مشكلة الفاصلة العائدة في إدراج القيم CLOB28/03/2024
-
تصحيح أخطاء ملف التصريحات في تطبيق Android30/03/2024
-
حلول لتعريف الـ Vector بنطاق متغير30/03/2024
تبدو الدالة البنائية كالتالي:
cpptemplate<typename T>
myClass::myClass(void) : std::stack(){
}
لكن، يجب أن يتم تحديد النوع T
في جميع الأماكن التي يتم فيها استخدامه. لذلك، يجب تحسين التعريف كما يلي:
cpptemplate<typename T>
myClass::myClass(void) : std::stack() {
}
الفرق الرئيسي هو إضافة
بعد myClass
في تعريف الدالة. هذا يحدد أن myClass
هو قالب (template) أيضًا ويستخدم النوع T
الذي يمرر إليه.
بالنسبة للخطأ الذي تواجهه، يبدو أن المترجم يشير إلى أن الدالة myClass::myClass(void)
ليست معرفة بشكل صحيح. بتصحيح التعريف كما تم ذكره أعلاه، يجب أن يتم التعامل مع هذا الخطأ.
بعد التعديل، يمكنك محاولة إعادة تشغيل الترجمة باستخدام الأمر:
bashclang++ -Wall -Werror -Wextra -c test.cpp
تأكد من حفظ التعديلات وتجربة الترجمة مرة أخرى، ويجب أن يتم الترجمة بنجاح بدون أخطاء.
المزيد من المعلومات
في سعيك لفهم استخدام القوالب في لغة البرمجة C++، يظهر لك خطأ في الترجمة يفيد بأن ‘myClass’ ليست فئة أو مساحة أو تعداد. هذا الخطأ يحدث بسبب خطأ في تعريف الدالة البنائية للفئة المشتقة myClass
.
في الشيفرة التي قدمتها:
cpptemplate<typename T>
myClass::myClass(void) : std::stack() {
}
هنا، يجب أن تحدد الفئة المشتقة myClass
أنها قالب أيضًا وتحديد النوع T
الذي يتم تمريره. يتم ذلك عن طريق إضافة
بعد myClass
في تعريف الدالة البنائية، كما يلي:
cpptemplate<typename T>
myClass::myClass(void) : std::stack() {
}
هذا التعديل يتيح للكمبايلر فهم أن myClass
هي فئة قالب، وأن النوع T
هو النوع الذي سيتم تحديده عند استخدام الفئة.
بعد أن تقوم بإجراء هذا التعديل، يجب أن يتم ترجمة الشيفرة بنجاح. يُفضل أيضًا التأكد من وجود تعريف صحيح للدالة main
أو الدالة الرئيسية في البرنامج الخاص بك لضمان عمل الشيفرة بشكل صحيح.