خطأ C ++: لا يوجد تحميل زائد قابل للتطبيق '=':

Khta C La Ywjd Thmyl Zayd Qabl Llttbyq



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

بناء الجملة

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







خطأ : لا تطابق إلى عن على 'المشغل أو العامل = '

المثال رقم 01:

دعونا نفكر في هذا الخطأ وطريقة حله. لفهمها بشكل أفضل ، سنقدم مثالاً سنقوم فيه بتمرير الأسماء باستخدام الكائنات إلى الوظيفة ثم نقوم بعرضها بعد ذلك. سنقوم أولاً بتضمين ملف الرأس iostream. بعد ذلك ، سنعلن عن فئة باسم 'my_object'. بداخلها ، أعلنا عن متغيرين من السلسلة المسمى 'F_name و' L_name '،' F_name 'الذي يشير إلى الاسم الأول للشخص حيث يشير' L_name 'إلى الاسم الأخير للشخص.



بعد ذلك ، أعلنا عن مُنشئ عام باسم 'my_object ()' حيث قمنا بتعيين قيم فارغة لكل من المتغيرين 'F_name' و 'L_name'. بعد ذلك ، أعلنا عن وظيفة أخرى مررنا إليها متغيري نوع السلسلة 'fn' و 'ln'. داخل ذلك ، أطلقنا على طريقة name_set (). بعد ذلك ، أعلنا عن وظيفتين للعضو 'show ()' و 'name_set ()'. عندما يتم استدعاء الوظيفة 'show () ، ستعرض الأسماء الأولى وأسماء العائلة معًا. بينما ، في وظيفة العضو 'set_name ()' ، مررنا متغيرين من سلسلة من نوع السلسلة 'fn' و 'ln' والتي قمنا بتمريرها أيضًا إلى المُنشئ الثاني.



الآن ، باستخدام عامل تعيين النسخ للفئة my_object ، نأخذ معلمة واحدة من النوع “my_object”. يعلن المترجم دائمًا أنه عضو عام مضمن في أي فئة. داخل هذا العضو ، قمنا بتعيين src.F_name إلى 'F_name' و src.L_name إلى 'L_name' التي احتفظنا بها بنسخة 'F_name' و 'L_name'. يتم تمرير هذا إلى أعضاء الفصل my_object. الآن ، أعلنا عن كائن من الفئة my_cobject المسمى 'name1' والذي مررنا إليه سلسلتين 'Anna' و 'smith' كوسيطة. سيؤدي هذا إلى استدعاء المُنشئ وعرض الاسم الأول مع الاسم الأخير.





بعد ذلك ، أنشأنا كائنًا آخر 'name2' ثم قمنا بتعيين الاسم لهذا الكائن بشكل منفصل. بعد تمرير القيم إلى المُنشئ لكلا الكائنين ، قمنا باستدعاء طريقة show () التي ستعرض بعد ذلك أسماء الكائنين 'nam1' و 'name2'. في نهاية الكود ، قمنا بإرجاع القيمة الخالية وقمنا بتنفيذ الكود الخاص بنا.

تضمن
صف دراسي my_object {
خاص :
الأمراض المنقولة جنسيا :: سلسلة F_name ، L_name ؛
عام :
my_object ( ) { F_name = '' ؛ L_name = '' ؛ }
my_object ( الأمراض المنقولة جنسيا :: سلسلة الجبهة الوطنية ، الأمراض المنقولة جنسيا :: سلسلة ln ) {
name_set ( الجبهة الوطنية ، لو ) ؛
}
فارغ تبين ( ) { الأمراض المنقولة جنسيا :: كوت << 'الاسم هو ' << F_name << '' << L_name << '. ' ؛ }
فارغ name_set ( الأمراض المنقولة جنسيا :: سلسلة الجبهة الوطنية ، الأمراض المنقولة جنسيا :: سلسلة ln ) { F_name = الجبهة الوطنية ؛ L_name = ln ؛ }
my_object & المشغل أو العامل = ( مقدار ثابت my_object & src ) {
F_name = src. F_name ؛
L_name = src. L_name ؛
إرجاع * هذه ؛
}

} ؛
int رئيسي ( int أرجك شار ** أرجف ) {
my_object name1 ( 'آنا' و 'حداد' ) ؛
my_object name2 ؛
الاسم 2 = ( 'آنا' و 'حداد' ) ؛
الاسم 1. تبين ( ) ؛
الاسم 2. تبين ( ) ؛
إرجاع 0 ؛
}

بعد تنفيذ الكود ، لدينا هذا الخطأ الذي يوضح أننا كتبنا رمزًا خاطئًا في السطر 24 يشير إلى نوع الخطأ الذي تمت مواجهته 'خطأ: لا يوجد تطابق مع' عامل التشغيل = ''. الآن ، سنحاول حل هذا الخطأ.



لحل هذا الخطأ ، لدينا عدة طرق لتمرير القيم إلى مُنشئ أي فئة. في الطريقة الأولى ، سنقوم ببساطة بتعيين الكائن 'name1' إلى 'name2' لأننا مررنا نفس القيم لكلا الكائنين ، لذلك لا داعي لتمريرهما بشكل منفصل. الآن نقوم بتنفيذ الكود.

int رئيسي ( int أرجك شار ** أرجف ) {

my_object name1 ( 'آنا' و 'حداد' ) ؛
my_object name2 ؛
الاسم 2 = الاسم 1 ؛
الاسم 1. تبين ( ) ؛
الاسم 2. تبين ( ) ؛

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

الطريقة الثانية لحل هذا الخطأ هي عندما يتعين علينا تمرير القيم المختلفة لكلا الكائنين. سنستخدم ببساطة اسم الفئة جنبًا إلى جنب مع القيم التي سيتم تمريرها إلى المُنشئ كوسيطة. مررنا الاسم الأول 'جون' والاسم الثاني 'سميث'. ثم قمنا بتنفيذ الكود.

int رئيسي ( int أرجك شار ** أرجف ) {

my_object name1 ( 'آنا' و 'حداد' ) ؛
my_object name2 ؛
الاسم 2 = my_object ( 'جون سميث' ) ؛

الاسم 1. تبين ( ) ؛
الاسم 2. تبين ( ) ؛

بعد تنفيذ الكود المضاف أعلاه ، لدينا الإخراج كما هو موضح أدناه. بالنسبة للكائن 'name1' ، فقد عرض الاسم 'Anna smith' وبالنسبة للكائن الثاني 'name2' ، فقد عرض 'Jhone Smith'. لكن هذه المرة عمل الكود الخاص بنا بشكل صحيح دون أي أخطاء فيه.

الآن ، سنحاول طريقة أخرى لتنفيذ التعليمات البرمجية الخاصة بنا بنجاح. كما في الحالات المذكورة أعلاه ، حاولنا تعيين القيم للكائنات باستخدام عامل الإسناد. لكن هذه المرة ، سنمرر القيم في وقت إعلان الكائن. كما نرى في المقتطف أدناه ، في وقت الإعلان عن الكائن 'name1' ، مررنا القيم كوسيطة للكائن بتكرار نفس الخطوة لـ 'name2'. الآن ، نقوم بتنفيذ الكود مرة أخرى.

int رئيسي ( int أرجك شار ** أرجف ) {
my_object name1 ( 'آنا' و 'حداد' ) ؛
my_object name2 ( 'جون سميث' ) ؛
الاسم 1. تبين ( ) ؛
الاسم 2. تبين ( ) ؛

بعد تنفيذ الكود لهذا الوقت أيضًا ، لم نواجه أي خطأ مما يعني أن هذا سيمنعنا أيضًا من حدوث أي أخطاء.

استنتاج

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