আমি সি ++ 11 স্ট্যান্ডার্ডটি চেষ্টা করে শুরু করেছি এবং আমি এই প্রশ্নটি পেয়েছি যা বর্ণনা করে যে কীভাবে কোনও ডিআইএস পদ্ধতি বা মত না এড়াতে একই ক্লাসের অন্য সিটি থেকে আপনার সিটারকে কল করতে হবে describes এখন আমি কোড দিয়ে একই জিনিসটি চেষ্টা করছি যা দেখতে দেখতে এটি দেখতে:
এইচপি
class Tokenizer
{
public:
Tokenizer();
Tokenizer(std::stringstream *lines);
virtual ~Tokenizer() {};
private:
std::stringstream *lines;
};
সিপিপি:
Tokenizer::Tokenizer()
: expected('=')
{
}
Tokenizer::Tokenizer(std::stringstream *lines)
: Tokenizer(),
lines(lines)
{
}
তবে এটি আমাকে ত্রুটি দিচ্ছে:
In constructor ‘config::Tokenizer::Tokenizer(std::stringstream*)’:
/path/Tokenizer.cpp:14:20: error: mem-initializer for ‘config::Tokenizer::lines’ follows constructor delegationআমি টোকেনাইজার () অংশটি তালিকার প্রথম এবং শেষ স্থানান্তরের চেষ্টা করেছি তবে তাতে কোনও লাভ হয়নি।
এর পিছনে কারণ কী এবং আমি কীভাবে এটি ঠিক করব? পরিবর্তে আমি lines(lines)শরীরে স্থানান্তরিত করার চেষ্টা করেছি this->lines = lines;এবং এটি ভাল কাজ করে। তবে আমি সত্যিই আরম্ভকারী তালিকাটি ব্যবহার করতে সক্ষম হতে চাই।