Скачать MetaTrader 5

ООП. Как вызвать вируальную функцию родителя из дочернего класса?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
yu-sha
1047
yu-sha  
class CBase {
public:
  virtual bool Create();
}; 

class CChildren : public CBase {
public:
  virtual bool Create();
};

 В дочернем Create() добавляется функциональность - нужно сначала выполнить родительский Create(), а затем добавить "свое". По аналогии с конструкторами и деструкторами.

Как это сделать?  

Rashid Umarov
Админ
11993
Rashid Umarov  

Попробуйте так:

class CBase {
public:
  virtual bool Create();
}; 

class CChildren : public CBase {
public:
  bool Create(){CBase::Create(); свой код };
};

Alexey Da
Модератор
6648
Alexey Da  
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class CBase
  {
public:
   virtual void      Create() { Print("Base");}
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class CChildren : public CBase
  {
public:
   virtual void      Create()
     {
      CBase::Create();
      Print("Child");
     }
  };
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   CChildren Child;
   Child.Create();
  }
//+------------------------------------------------------------------+

yu-sha
1047
yu-sha  

Спасибо!  

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий