iamdivine, понимаешь, задача у тебя нетривиальная. На нее невозможно дать однозначный ответ.
Мое решение сводится к тому, чтобы выкинуть сишечку из этого кода и поставить нормальную строку, для которой уже и создать минимально сложный конструктор.
Тебе надо беседовать с преподавателем о том, что он хотел выразить столь пространной фразой, как "минимально сложный конструктор".
iamdivine, тогда подходи к вопросу тоже с приколом :)
Держи вариант:
class NamedException : public Exception {
std::string name;
public:
NamedException( std::string&& name ) : name{ std::move( name ) } {};
};
В реализации ты, поди, сходу не разберешься. Так что комментарии тебе. Они помогут тебе провести адвокатуру решения с приколом.
Тут задействована стандартная строка C++ - std::string [?]. Обязательно изучи ее документацию.
Строка вместо указателя на массив однобайтовых целых используется потому что задание на C++, а не на C. В C++ строки передаются типом стандартной строки.
Конструктор преобразования реализует семантику перемещения - [?].
Имей в виду что конструктор этот будет с одним параметром, т.к. поле const int a родительского типа находится в его приватной зоне и не инициализируется потому что его конструктора нет, а задание не заключается в том чтобы ты писал конструктор базового типа. У тебя нет задачи написать конструктор и для родительского типа тоже, есть задача написать конструктор только для производного типа.
В результате минимально сложным конструктором будет вот такой, который инициализирует единственное свое строковое поле перемещенным значением.
Имя параметра конструктора и имя поля типа могут совпадать, транслятор это правильно решает.
Ну и при любом непонимании со стороны преода апеллируй к тому, что он ничего и не объяснил толком. Какая постановка задачи, такое и решение.