Ошибки, баги, вопросы - страница 3303

 
Koldun Zloy #:

Этого не понял.

Подобное.

class A
{
public:  
  A( const int iValueA1, const int iValueA2, const int iValueA3, const int iValueA4, const int iValueA5 )
  {
  }
  
  A( const A* const Value ) { this = Value; }
};

class B : public A
{
public:  
  B( const int iValueB1, const int iValueB2, const int iValueB3, const int iValueB4, const int iValueB5,
     const A* const ValueA ) : A(ValueA)
  {
  }  

  B( const B* const Value ) : A(Value)  { this = Value; }
};

class C : public B
{
public:  
  C( const int iValueC1, const int iValueC2, const int iValueC3, const int iValueC4, const int iValueC5,
     const B* const ValueB ) : B(ValueB)
  {
  }  

  C( const C* const Value ) : B(Value)  { this = Value; }
};

void OnStart()
{
  A a(1, 2, 3, 4, 5);
  B b(5, 4, 3, 2, 1, &a);
  C c(0, 1, 2, 3, 4, &b);  
}
 
fxsaber #:

Подобное.

Это то же самое что передать структуру.

 
Koldun Zloy #:

Это то же самое что передать структуру.

Это не требует созданий структур (типов).

 
fxsaber #:

Подобное.

Создал два лишних объекта и вызвал еще для них конструктор копирования. В чем прикол?

Не нравятся портянки - меняй архитектуру, или вот так еще можно:

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);
}

Но это как-раз вариант со структурой.

 
Vladimir Simakov #:

 или вот так еще можно:

а если структуры нужны только для инициализации экземпляра класса, то я бы так написал:

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);
}
 
Igor Makanu #:

а если структуры нужны только для инициализации экземпляра класса, то я бы так написал:

Тогда уж, каждую структуру в своем классе определяй, так кошерней будет)
 
Vladimir Simakov #:
Тогда уж, каждую структуру в своем классе определяй, так кошерней будет)

ну как бы да - так лучше

мой посыл - на кой объявлять новые типы данных, если в дальнейшем они не будут использованы нигде кроме инициализации, тогда логичнее и описать их внутри класса 

 
Vladimir Simakov #:

Создал два лишних объекта и вызвал еще для них конструктор копирования. В чем прикол?

Пояснение к этому.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

fxsaber, 2023.03.19 11:04

  • В наследник передавать ссылку на родительский класс, а потом внутри вызывать конструктор с входным в виде этой ссылки.

Не нравятся портянки - меняй архитектуру

Про это и был изначально вопрос.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

fxsaber, 2023.03.19 11:04

Подскажите, как архитектурно правильно работать со входными параметрами конструктора при наследованиях?

, или вот так еще можно:

Но это как-раз вариант со структурой.

Для чего приводить пример того, что сразу было озвучено?

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

fxsaber, 2023.03.19 11:04

  • Создавать спец. структуру с полями входных параметров и передавать подобные структуры?
 
Igor Makanu #:

мой посыл - на кой объявлять новые типы данных, если в дальнейшем они не будут использованы нигде кроме инициализации, тогда логичнее и описать их внутри класса

Игра со скопами, не более. По смыслу ничего не меняется - новый тип данных, доступный извне.

 
fxsaber #:

Подобное.

Отвлечённо, а что ЭТО ?