নিম্নলিখিত কোড বিবেচনা করুন:
struct A
{
// No data members
//...
};
template<typename T, size_t N>
struct B : A
{
T data[N];
}
এইভাবে আপনাকে বি সূচনা করতে হবে: B<int, 3> b = { {}, {1, 2, 3} };
আমি বেস শ্রেণীর জন্য অপ্রয়োজনীয় খালি avoid avoid এড়াতে চাই। একটি সমাধান Jarod42 দ্বারা প্রস্তাবিত হয় এখানে যদিও, উপাদান ডিফল্ট আরম্ভের সাথে কাজ করে না: B<int, 3> b = {1, 2, 3};
জরিমানা কিন্তু B<int, 3> b = {1};
নয়: b.data[1]
এবং b.data[2]
0 সক্রিয়া ডিফল্টভাবে হয় না, এবং কম্পাইলার ত্রুটি দেখা দেয়। নির্মাণ থেকে বেস ক্লাসটি "আড়াল" করার কোনও উপায় আছে (বা সি ++ এর সাথে থাকবে)?
template<class... Ts> B(Ts... args) : data{args...} {}
?