два конструктора с одинаковой шапкой в теле
как грамотно в плюсах организовать 2 разных конструктора имеющих одинаковый общий код в начале, а остальной код "свой"
TextFrameBase(int size,int a , int b,int c) {
/*общий код*/
/*какой-то свой код для этого конструктора 1*/
}
TextFrameBase(int size) {
/*общий код*/
/*какой-то свой код для этого конструктора 2*/
}
Ответы (1 шт):
Автор решения: KoVadim
→ Ссылка
Как всегда есть три базовых способа.
вынести общий код в отдельную функцию. Тут все очевидно.
использовать делегирующий конструктор.
class TextFrameBase { public: TextFrameBase(int size, int c) {/*общий код*/} TextFrameBase(int size,int a , int b,int c) : TextFrameBase(size, c) { /*какой-то свой код для этого конструктора 1*/ } TextFrameBase(int size) : TextFrameBase(size, 1) { /*какой-то свой код для этого конструктора 2*/ } }вынести общий код в код класса предка/шаблона crtp
ну и как всегда, если стандартные способы не помогают, то можно использовать макросы. Главное не порезаться.