কলের জন্য কোন ম্যাচিং ফাংশন না মানে যখন আমরা কিছু নির্দিষ্ট ফাংশন কল করছি, কিন্তু সেই ফাংশনের আইডি সংজ্ঞায়িত ফাংশনের আর্গুমেন্টের সাথে মেলে না। তাই আমরা C++ এ 'কলের জন্য কোনো মিল ফাংশন নেই' একটি ত্রুটি পাই। যখনই কম্পাইলার বলে যে কোনও মিলিত পদ্ধতি নেই, এটি সাধারণত নির্দেশ করে যে কম্পাইলার অভিন্ন নামে একটি পদ্ধতি চিহ্নিত করেছে যেমন আমরা ফাংশনে প্যারামিটার দিয়েছি।
সুতরাং যখন আমরা ফাংশনে ভুল টাইপ বা অনুপযুক্ত প্যারামিটারের নির্দিষ্ট পদ্ধতিটি পাস করতে থাকি। একটি ফাংশন সংজ্ঞা কম্পাইলারের জন্য পদ্ধতির নাম এবং সেইসাথে কীভাবে এটি চালু করতে হবে তা উল্লেখ করে। ফাংশনের সম্পূর্ণ বিষয়বস্তু স্পষ্টভাবে ঘোষণা করা হচ্ছে। এই প্রবন্ধে, আমরা C++-এ কীভাবে ‘কোনও কলের জন্য কোনো মিল ফাংশন নেই’ ত্রুটি দেখা যায় সে বিষয়ে কথা বলব।
ক্লাসের অবজেক্ট ব্যবহার করুন
এই পরিস্থিতিতে, কলের সময় ফাংশন প্যারামিটার মেলে না, তাই আমরা যেখানে রেফারেন্সের প্রয়োজন সেখানে পয়েন্টারগুলি পাস করার চেষ্টা করব এবং ফাংশন কলগুলিতে বিভিন্ন শ্রেণীর রেফারেন্স ধরন ব্যবহার করব। যখনই আমরা ফাংশনটি চালু করি কিন্তু আর্গুমেন্টের ফাংশন সংজ্ঞাটি মেলে না, তখনই 'C++ এ কলের জন্য কোন ম্যাচিং ফাংশন নেই' ত্রুটি উত্থাপিত হয়৷
এখন আমাদের ত্রুটি সংশোধন করতে হবে; এই উদ্দেশ্যে, আমরা শুধুমাত্র ফাংশনের সংজ্ঞার সময় উপযুক্ত ম্যাচিং প্যারামিটার প্রদান করি। কোডটি, এর বিস্তারিত বিবরণ সহ, নীচে দেখা যাবে৷
৷

কোডের শুরুতে, আমরা লাইব্রেরি
পরের লাইনে, আমরা আরেকটি ফাংশন সেট ভ্যালু() চালু করব। এই পদ্ধতিটি তার যুক্তি হিসাবে পরিবর্তনশীল 'মান' ধারণ করে। আমরা তার আর্গুমেন্ট হিসাবে পাস করা হয়েছে যে মান বৃদ্ধি না. তারপরে আমরা মেইন() ফাংশনকে কল করি এবং আমাদের আর্গুমেন্ট হিসাবে পূর্ণসংখ্যা ডেটা টাইপ এবং অক্ষর ডেটা টাইপের 'আর্গভি' পয়েন্টার সহ 'আর্গসি' দেওয়া হয়। 'আরজিসি' হল নং। অপারেটিং সিস্টেম থেকে কোডে দেওয়া প্যারামিটারগুলির। 'আর্গভি' হল প্যারামিটারের সংগ্রহ।
এখন আমরা 'A' ক্লাসের একটি অবজেক্ট 'obj' তৈরি করি। আমরা মেথড setValue() ফাংশন চালু করি। 'obj' এর আর্গুমেন্ট হিসাবে পাস করা হয়। কিন্তু আমরা ক্লাসের সাথে বস্তুটিকে সংযুক্ত করিনি। এই কারণেই যখন আমরা ফাংশনটিকে setValue() বলি, তখন এটি একটি ত্রুটি ফেরত দেয় কারণ আমাদের সেই ক্লাসটি নেই যেখানে আমরা setValue() ফাংশনটি চালু করি। উপরের কোডে, আমরা setValue() ফাংশন কলিং আর্গুমেন্টের মধ্যে একটি ক্লাস অবজেক্ট পাস করছি, কিন্তু যদি আমরা setValue() ফাংশন সংজ্ঞা পরীক্ষা করি, তাহলে আমরা পাসিং আর্গুমেন্ট মানটিকে পূর্ণসংখ্যা হিসাবে ধরে নিই। কোডটি বন্ধ করতে, আমরা 'রিটার্ন 0' কমান্ডটি ব্যবহার করেছি। এখানে উপরে বর্ণিত কোডের আউটপুট যাচাই করা যেতে পারে।

আমরা উপরে উল্লিখিত কোডটি কার্যকর করার পরে 'A-তে কল করার জন্য কোনও মিল ফাংশন নেই' ত্রুটিটি পাই৷
এই ত্রুটিটি কীভাবে সমাধান করবেন?
পদ্ধতি কলের সময় এই ত্রুটিটি ঠিক করতে, আমাদের অবশ্যই ফাংশনে পর্যাপ্ত সংশ্লিষ্ট পরামিতি সরবরাহ করতে হবে। এই ত্রুটিটি সমাধান করার অন্য উপায় হল বিভিন্ন ওভারলোড ফাংশনের বিভিন্ন পরামিতি তৈরি করা। এখানে আমরা শুধুমাত্র ফাংশন main() এর আর্গুমেন্ট পরিবর্তন করি। এইভাবে 'কলের জন্য কোনো ম্যাচিং ফাংশন' থেকে C++ ত্রুটি সরানো হবে। কোডটি, এর বিস্তারিত বিবরণ সহ, নীচে দেখা যাবে৷
৷

স্ট্যান্ডার্ড নেমস্পেস ব্যবহার করার পর, আমরা হেডার ফাইল
পরবর্তী ধাপে, আমরা main() পদ্ধতি ব্যবহার করি। main() ফাংশনের মধ্যে, আমরা আর্গুমেন্ট হিসাবে পূর্ণসংখ্যা ডেটা টাইপের 'argc' এবং ক্যারেক্টার ডেটা টাইপের 'argv' প্রদান করব। 'argc' প্রোগ্রামে অপারেটিং সিস্টেম দ্বারা প্রদত্ত প্যারামিটারের সংখ্যা দেখায়। 'argv' একটি প্যারামিটার সংগ্রহ। এখন আমরা 'A' ক্লাসের একটি অবজেক্ট তৈরি করব যার নাম 'obj'। আমরা পূর্ণসংখ্যা ডেটা টাইপ দিয়ে ভেরিয়েবল 'মান' শুরু করেছি। আমরা অবজেক্টের setValue() পদ্ধতি ব্যবহার করেছি এবং এই ফাংশনের প্যারামিটার হিসেবে 'মান' সেট করেছি।
শেষ পর্যন্ত, আমরা প্রোগ্রামটি বন্ধ করতে 'রিটার্ন 0' যোগ করি। মনে রাখবেন মেইন() ফাংশনে আমাদের অবশ্যই একই ধরনের ফাংশন এবং তাদের আর্গুমেন্ট লিখতে হবে। তারপরে আমরা সেই ফাংশনটিকে এর অবজেক্টে পাস করেছি এবং এটি ফিরিয়ে দিয়েছি। এখানে উপরে বর্ণিত কোডের আউটপুট যাচাই করা যেতে পারে।

উপসংহার
এই নিবন্ধে, আমরা 'কলের জন্য কোনও মিল ফাংশন নেই' ত্রুটি পাওয়ার কারণ এবং কীভাবে এটি সমাধান করা যায় তা অনুসন্ধান করেছি। যখনই আমরা এই ত্রুটিটি পাই, তখন আমাদের প্রয়োজনীয় পদ্ধতির প্যারামিটারের পাশাপাশি তাদের ডেটা টাইপ পরীক্ষা করতে হবে। ফাংশন আর্গুমেন্টে আর্গুমেন্ট দেওয়ার সময় আমরা ভুল করি। আমরা ফাংশনের সাথে প্যারামিটারের সাথে মিল নেই। আমাদের নির্দিষ্ট পদ্ধতিতে মিলে যাওয়া প্যারামিটার দিতে হতে পারে। অথবা আমাদের একই ডেটা টাইপের সাথে একটি নতুন ফাংশন যোগ করতে হবে। প্রোগ্রামে ফাংশনে উপযুক্ত প্যারামিটারগুলি পরীক্ষা করে যোগ করার পরে, 'কলের জন্য কোনও মিল ফাংশন নেই' ত্রুটিটি সমাধান করা হবে৷
লেখক সম্পর্কে
কালসুম বিবি
হ্যালো, আমি একজন ফ্রিল্যান্স লেখক এবং সাধারণত লিনাক্স এবং অন্যান্য প্রযুক্তি সম্পর্কিত বিষয়বস্তুর জন্য লিখি