Здравствуйте, pokutan, Вы писали:
P>Здравствуйте, Sm0ke, Вы писали:
S>>Здравствуйте, pokutan, Вы писали:
P>>>думаю, вопрос немного в другой плоскости
P>>>читаем aggregate_initialization
P>>>An aggregate is one of the following types:
P>>>array type
P>>>class type (typically, struct or union), that has
P>>>.........
P>>>.........
P>>>no virtual member functions
P>>>тип агрегатор имеет кучу ограничений, среди прочего — не может иметь виртуальных методов
S>>я про это и написал.
S>>Но в чём причина добавлять такое ограничение в стандарт? Без него было бы лучше.
P>ну, наверное, это логично с точки зрения семантики, агрегатор — просто-напросто контейнер для разных данных, он не предполагает делегирования (ака переопределения в наследниках) операций для манипулирования этими данными
Скорее всего я не понял что вы написали
Но вот так же можно:
struct t_param
{
bool flag;
int count;
};
class t_object : public t_param
{
t_object() : t_param{false, 1} {}
virtual void ok() {}
};
? Так в чём проблема позволить и Это:
struct t_param
{
bool flag;
int count;
virtual void ok() {}
};
class t_object : public t_param
{
public:
t_object() : t_param{false, 1} {} // зачем-то ошибка компиляции
void ok() override {}
};