আমি C ++ 20 বৈশিষ্ট্য এক সম্পর্কে একটি প্রশ্ন, মনোনীত initializers (এই বৈশিষ্ট্যটি সম্পর্কে আরও তথ্য পেয়েছেন এখানে )
#include <iostream>
constexpr unsigned DEFAULT_SALARY {10000};
struct Person
{
std::string name{};
std::string surname{};
unsigned age{};
};
struct Employee : Person
{
unsigned salary{DEFAULT_SALARY};
};
int main()
{
std::cout << std::boolalpha << std::is_aggregate_v<Person> << '\n'; // true is printed
std::cout << std::boolalpha << std::is_aggregate_v<Employee> << '\n'; // true is printed
Person p{.name{"John"}, .surname{"Wick"}, .age{40}}; // it's ok
Employee e1{.name{"John"}, .surname{"Wick"}, .age{40}, .salary{50000}}; // doesn't compile, WHY ?
// For e2 compiler prints a warning "missing initializer for member 'Employee::<anonymous>' [-Wmissing-field-initializers]"
Employee e2 {.salary{55000}};
}
এই কোডটি gcc 9.2.0 এবং -Wall -Wextra -std=gnu++2a
পতাকা সহ সংকলিত হয়েছিল ।
আপনি উপরের দেখতে পাচ্ছেন, উভয় স্ট্রাক্ট Person
এবং Employee
সমষ্টিগত তবে Employee
নির্ধারিত আরম্ভকারী ব্যবহার করে সমষ্টিটির সূচনা সম্ভব নয় of
কেউ আমাকে কেন ব্যাখ্যা করতে পারেন?
public
বা private
প্রতিবার ব্যবহার করি ... যেহেতু আমি এ নিয়ে কোনও চিন্তা কখনই নষ্ট করি না ... যাইহোক ধন্যবাদ
struct
গুলি সর্বজনীনভাবে ডিফল্টরূপে উত্তরাধিকারী
struct Employee : public Person