ত্রুটি: প্যারামিটার 1 এর জন্য ডিফল্ট যুক্তি দেওয়া হয়েছে


96

আমি নীচের কোড সহ এই ত্রুটি বার্তা পাচ্ছি:

class Money {
public:
    Money(float amount, int moneyType);
    string asString(bool shortVersion=true);
private:
    float amount;
    int moneyType;
};

প্রথমে আমি ভেবেছিলাম সি ++ এ প্রথম পরামিতি হিসাবে ডিফল্ট প্যারামিটারগুলি অনুমোদিত নয় তবে এটি অনুমোদিত।


আপনি কি আরও কিছু বিশদ দিতে পারেন?
এটিয়েন ডি মার্টেল

আমি উইন্ডোজটিতে MinGW 5.1.6 এর সাথে Eclipse CDT ব্যবহার করছি।
পোকোয়া

উত্তর:


218

আপনি সম্ভবত ফাংশনটি বাস্তবায়নে ডিফল্ট প্যারামিটারটিকে নতুনভাবে সংজ্ঞায়িত করছেন। এটি কেবল ফাংশন ঘোষণায় সংজ্ঞায়িত করা উচিত।

//bad (this won't compile)
string Money::asString(bool shortVersion=true){
}

//good (The default parameter is commented out, but you can remove it totally)
string Money::asString(bool shortVersion /*=true*/){
}

//also fine, but maybe less clear as the commented out default parameter is removed
string Money::asString(bool shortVersion){
}

4
এখন এটি বলে: স্ট্রিং মানি :: অস্ট্রাস্টিং () 'ক্লাস `
মানি'র সাথে কোনওরকম

4
@ পোকোয়া আপনার এখনও bool shortVersionপ্যারামিটার রাখা দরকার , কেবল মুছে ফেলুন বা মন্তব্য করুন= true
ইয়াকোবি

@ ইয়াকোবি: ধন্যবাদ, আপনি ঠিক বলেছেন। এটি কোনও তাত্পর্যপূর্ণ নয়, খুব বিভ্রান্তিকর।
পোকো

7
@ পোকোয়া: আসলে, তা বোঝা যায় না। যদি আপনি প্যারামিটারগুলির জন্য ডিফল্ট মান দেয় তবে এগুলি কলারে পূরণ করা হয় । তাই তারা আছে , ফাংশন ঘোষণার হতে কারণ এই কি কলারের দেখতে প্রয়োজন হয়। আপনার যদি সংজ্ঞা অনুসারে তাদের পুনরাবৃত্তি করতে হয় তবে তা বজায় রাখা অপ্রয়োজনীয় এবং আরও ঝামেলা হবে। (এই কারণেই আমি বাস্তবায়নের ক্ষেত্রে ডিফল্ট প্যারামিটারগুলি সম্পর্কে মন্তব্য করার বিষয়ে ইয়াকবির সাথে একমত নই। আইএমই, বাস্তব প্রকল্পগুলিতে এ জাতীয় মন্তব্য শীঘ্রই বা ঘোষণার সাথে সিঙ্কের বাইরে চলে যাবে।
এসবিআই

4
আসল সংজ্ঞাটি হ'ল std::string Money::asString(bool)। মনে রাখবেন এটি এমনকি পরামিতিটির নামও অন্তর্ভুক্ত করে না। এবং, প্রকৃতপক্ষে, আপনি সংজ্ঞার তুলনায় ঘোষণায় বিভিন্ন নাম ব্যবহার করতে পারেন। (এটি বিশাল প্রকল্পে গুরুত্বপূর্ণ যখন - যে কোনও কারণে - আপনি সংজ্ঞাতে নামটি পরিবর্তন করতে চান, তবে ঘোষণার উপর নির্ভর করে কয়েক মিলিয়ন কোডের কোডটি পুনরায় সংকলন করতে চান না))
এসবিআই
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.