كيفية حل الخطأ 'لا يوجد منشئ مطابق لتهيئة' في C++

Kyfyt Hl Alkhta La Ywjd Mnshy Mtabq Lthyyt Fy C



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

ما الذي يسبب الخطأ 'لا يوجد مُنشئ مطابق لتهيئة' في C++؟

عند التعامل مع المُنشئين في لغة C++، يظهر خطأ 'لا يوجد مُنشئ مطابق لتهيئة' هذا عادةً لأنه عندما يُطلق على مُنشئ اسم المُنشئ الافتراضي بواسطة المترجم، لا يتم إنشاؤه، لذلك عليك الإعلان عن المعلمات ونص المُنشئ بنفسك. يؤدي الفشل في الإعلان عن المعلمات المناسبة إلى هذا النوع من أخطاء المُنشئ.







قم بإنشاء ملف نصي بسيط، والصق كود الدالة Square() فيه، واحفظه بالملحق .h. الآن قم بلصق هذا الملف في مجلد التضمين الخاص بمجلد bin الخاص بالمترجم CPP. الآن، عند استدعاء ملف الرأس هذا في main.cpp، سيتم قراءة هذا الملف بواسطة المترجم.



Square.h ملف الرأس

#ifndef SQUARE_H

#تعريف SQUARE_H


فصل مربع {

خاص :

مزدوج طول ;

مزدوج عرض ;

عام :

مربع ( مزدوج , مزدوج ) ;

مزدوج getLength ( ) مقدار ثابت ;

مزدوج getWidth ( ) مقدار ثابت ;

} ;



مربع :: مربع ( مزدوج ل، مزدوج في ) {

طول = ل ;
عرض = في ;

}



مزدوج مربع :: getWidth ( ) مقدار ثابت { يعود عرض ; }

مزدوج مربع :: getLength ( ) مقدار ثابت { يعود طول ; }



#إنهاء إذا

ملف رأس main.cpp

#تشمل

#تشمل 'square.h'

استخدام مساحة الاسم الأمراض المنقولة جنسيا ;



كثافة العمليات رئيسي ( )

{

مربع مربع1 ( 10.0 , 10.0 ) ;

مربع مربع2 ;



cout << 'عرض وطول المربع 1:' << box1. getWidth ( ) << '،' << box1. getLength ( ) << endl ;

cout << 'عرض وطول المربع 2:' << box2. getWidth ( ) << '،' << box2. getLength ( ) << endl ;



box2 = box1 ;

cout << ' عندما يكون المربع 1 يساوي المربع 2 ' << endl ;

cout << 'عرض وطول المربع 1:' << box1. getWidth ( ) << '،' << box1. getLength ( ) << endl ;

cout << 'عرض وطول المربع 2:' << box2. getWidth ( ) << '،' << box2. getLength ( ) << endl ;



يعود 0 ;

}

في هذا البرنامج، يقوم المستخدم بإدخال طول وعرض مربعين مربعين ومن ثم مساواة المربعين وإرجاع طولهما وعرضهما:




يقوم المترجم بإرجاع الخطأ في السطر رقم 14 لأن المقاول يتوقع وسيطتين بينما لا توجد وسيطات مقدمة له:





في السطر رقم 8، يقوم المترجم بإرجاع خطأ في المنشئ لأنه لم يتم توفير الوسائط بينما يجب أن تكون هناك وسائط محددة.

كيفية حل الخطأ 'لا يوجد مُنشئ مطابق لتهيئة' في C++

يعرض المترجم الخطأ في السطر رقم 8 من كود main.cpp نظرًا لمحاولة استدعاء المُنشئ الافتراضي لـ Square. لا يمكن للمترجم إنشاء مُنشئ افتراضي نظرًا لوجود مُنشئ محدد من قبل المستخدم بالفعل ويأخذ وسيطتين. لذلك، حدد معلماته على النحو التالي:



مربع مربع2 ( 0 , 10 ) ;

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

مربع :: مربع ( مزدوج ل = 0 , مزدوج في = 0 )

يمكن إصلاح خطأ المنشئ عن طريق استدعاء المنشئ ومعلماته والإعلان عنها بشكل صحيح. يتم تغيير الرموز الموجودة في main.cpp وSquare.h وفقًا للتعليمات المذكورة أعلاه. وتم حل خطأ المنشئ غير المطابق. هذا هو الكود المحدث لملف الرأس:

هذا هو الكود المحدث للملف الرئيسي:

الرموز المذكورة أعلاه بعد تصحيح الأخطاء تُرجع الإخراج التالي:

يتم توفير عرض وطول صندوقين مربعين من قبل المستخدم، ويتم إرجاع المعلمات الخاصة بهما. لاحقًا، يتم تطبيق شرط لجعل كلا المربعين متساويين، ثم سيتم إرجاع قيم الطول والعرض المقابلة الجديدة.

خاتمة

في لغة C++، المُنشئ هو وظيفة عضو معينة تأخذ اسمها بعد اسم الفئة التي ترتبط بها. يتم استخدامه لتهيئة بعض القيم المفيدة لأعضاء الكائن. تتم مواجهة الخطأ 'لا يوجد مُنشئ مطابق لتهيئة' في C++ عندما يكون هناك خطأ في إعلان المُنشئ. عادة، يقوم مترجم C++ بإنشاء مُنشئ بنفسه، ولكن عندما يتم الإعلان عن المُنشئات من قبل المستخدم، يجب أن يكون هناك إعلان مناسب عن المعلمات ونص المُنشئ لتجنب مواجهة مثل هذه الأخطاء.