Создал два лишних объекта и вызвал еще для них конструктор копирования. В чем прикол?
Не нравятся портянки - меняй архитектуру, или вот так еще можно:
struct TInputA{
int aA;
int bA;
};
struct TInputB: TInputA{
int aB;
int bB;
};
struct TInputC: TInputB{
int aC;
int bC;
};
class TA{
int aA;
int bA;
public:
TA(const TInputA& in):aA(in.aA),bA(in.bA){}
};
class TB:public TA{
int aB;
int bB;
public:
TB(const TInputB& in):TA(in),aB(in.aB),bB(in.bB){}
};
class TC:public TB{
int aC;
int bC;
public:
TC(const TInputC& in):TB(in),aC(in.aC),bC(in.bC){}
};
void OnStart(){
TInputC in{1,2,3,4,5,6};
TC x(in);
}
а если структуры нужны только для инициализации экземпляра класса, то я бы так написал:
class TA{
public:
struct TInputA{
int aA;
int bA;
};
struct TInputB: TInputA{
int aB;
int bB;
};
struct TInputC: TInputB{
int aC;
int bC;
};
private:
int aA;
int bA;
public:
TA(const TInputA& in):aA(in.aA),bA(in.bA){}
};
class TB:public TA{
int aB;
int bB;
public:
TB(const TInputB& in):TA(in),aB(in.aB),bB(in.bB){}
};
class TC:public TB{
int aC;
int bC;
public:
TC(const TInputC& in):TB(in),aC(in.aC),bC(in.bC){}
};
void OnStart(){
TA::TInputC in{1,2,3,4,5,6};
TC x(in);
}
Vladimir Simakov #: Тогда уж, каждую структуру в своем классе определяй, так кошерней будет)
ну как бы да - так лучше
мой посыл - на кой объявлять новые типы данных, если в дальнейшем они не будут использованы нигде кроме инициализации, тогда логичнее и описать их внутри класса
Подскажите, как архитектурно правильно работать со входными параметрами конструктора при наследованиях?
На примере ниже получаются портянки.
Наверное так должно быть по логике. Как в C++.
Хотя, мне кажется в C# реализована более гибкая система через :: base()
Наверное так должно быть по логике. Как в C++.
По ссылке нет никаких предложений.
Можно передавать структуру, можно портянку.
Оба варианта правильные.
Этого не понял.
Этого не понял.
Подобное.
Подобное.
Это то же самое что передать структуру.
Это то же самое что передать структуру.
Это не требует созданий структур (типов).
Подобное.
Создал два лишних объекта и вызвал еще для них конструктор копирования. В чем прикол?
Не нравятся портянки - меняй архитектуру, или вот так еще можно:
Но это как-раз вариант со структурой.
или вот так еще можно:
а если структуры нужны только для инициализации экземпляра класса, то я бы так написал:
а если структуры нужны только для инициализации экземпляра класса, то я бы так написал:
Тогда уж, каждую структуру в своем классе определяй, так кошерней будет)
ну как бы да - так лучше
мой посыл - на кой объявлять новые типы данных, если в дальнейшем они не будут использованы нигде кроме инициализации, тогда логичнее и описать их внутри класса