1 Востаннє редагувалося Betterthanyou (23.05.2016 13:27:27)

Тема: Успадкування і обробка помилок, ініціалізація полів класу без конс...

Я зробив клас "Error" який я хочу використовувати для успадкування
І QueryError та FunctionError які будуть використовуватися для обробки помилок запиту та помилок у функції

class Error
{
public:
    std::string error;

};

class QueryError : public Error {};
class FunctionError : public Error {};

Бачите я не писав конструкторів, я збираюся ініціалізувати їх за допомогою такого запису

    throw Error{ (std::string)"Error" };

Зараз немає помилок, але коли спробувати так само написати до класу FunctionError чи QueryError виникає помилка "no instance of constructor" та "cannot convert from 'initializer list'"

Чому так відбувається, хіба коли я успадковую клас поля (змінна std::string error) не "переходять" до child класів ?

Можна без допомоги конструктора ініціалізувати QueryError і FunctionError класи ?

Подякували: leofun011

2

Re: Успадкування і обробка помилок, ініціалізація полів класу без конс...

Ініціалізація списком - не конструктор, і, відповідно, не успадковується.
Ініціалізація списком - то для АТД, а конструктор - для ООП, хоча б тому, що в конструкторії може бути щось, крім ініціалізації. Відповідно, змішування, взагалі кажучи, не бажане. Але, наскільки я розумію логіку розробників мови, цю фічу додадуть якщо не в 2017, то в 2020 точно.

Подякували: Betterthanyou, leofun012