Как правильно вызвать базовый параметрический конструктор из класса потомка?

 

Собственно имеется базовый класс с единственным параметрическим конструктором требующих два аргумента

Когда призводный класс пытается наследоваться от базового, компилятор выдает ошибку: 'CBaseClass - wrong parameters

class CBaseClass
{
   private:
      int m_a;
      int m_b;
   public:
      CBaseClass(int a, int b)
      {
         m_a = a;
         m_b = b;
      }
};

class ChClass : CBaseClass
{
   int m_c;
};
 
C-4:

Собственно имеется базовый класс с единственным параметрическим конструктором требующих два аргумента

Когда призводный класс пытается наследоваться от базового, компилятор выдает ошибку: 'CBaseClass - wrong parameters

 

class ChClass:public CBaseTrade


 
Konstantin83:

class ChClass:public CBaseTrade


Вызов параметрического конструктора это не отменяет. Код не будет компилироваться.
 
C-4:

Собственно имеется базовый класс с единственным параметрическим конструктором требующих два аргумента

Когда призводный класс пытается наследоваться от базового, компилятор выдает ошибку: 'CBaseClass - wrong parameters

 

У Вас базовый конструктор с параметрами, поэтому обойтись конструктором "по умолчанию" в потомке не получится.

Только вот так:

class ChClass : public CBaseClass
{
   int m_c;
   ChClass(int a, int b)
   :
   CBaseClass( a,  b)
   {
   }
};
 
C-4:
class ChClass : CBaseClass
{
public:   
   ChClass()
      : CBaseClass(0, 0)
   {}

private:
   int m_c;
};
Вроде так. Если что, курить список инициализации вот тут
 

А так работает?

public:
      CBaseClass(int a, int b): m_a(a),m_b(b) {};

 

 
Yedelkin:

А так?

А так правильней, кстати.
 

Всё же есть в Справочнике:

//+------------------------------------------------------------------+
//|  базовый класс                                                   |
//+------------------------------------------------------------------+
class CFoo
  {
   string            m_name;
public:
   //--- конструктор со списком инициализации
                     CFoo(string name) : m_name(name) { Print(m_name);}
  };
//+------------------------------------------------------------------+
//|  потомок класса CFoo                                             |
//+------------------------------------------------------------------+
class CBar : CFoo
  {
   CFoo              m_member;      // член класса является объектом предка
public:
   //--- конструктор по умолчанию в списке инициализации вызывает конструктор предка
                     CBar(): m_member(_Symbol), CFoo("CBAR") {Print(__FUNCTION__);}
  };
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   CBar bar;
  }

 

 
Yedelkin:

Всё же есть в Справочнике:

Я не смог найти. Все спасибо - заработало.
 

Чтоб не засорять форум тут же спрошу. 

При торговле валютами пользовал базовый класс CTrade. Все работало.

Стал писать эксперта под Брокерский дом Открытие - не выставлялись ордера из-за типа заполнения ордера - нужно было выставить ORDER_FILLING_RETURN.   

пришлось самому заполнять всю структуру... Как это сделать правильно с помощью ООП ?  

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
dimeon: При торговле валютами пользовал базовый класс CTrade. Все работало.

Стал писать эксперта под Брокерский дом Открытие - не выставлялись ордера из-за типа заполнения ордера - нужно было выставить ORDER_FILLING_RETURN.   

пришлось самому заполнять всю структуру... Как это сделать правильно с помощью ООП ?  

 Помощь ООП не потребуется :) См. готовый метод: Справочник MQL5 / Стандартная библиотека / Торговые классы / CTrade / SetTypeFilling
Причина обращения: