Новая версия платформы MetaTrader 5 build 2690: Улучшения в MetaEditor - страница 16

 
Ivan Titov:
Перестали вызываться перегруженные виртуальные методы в унаследованных классах
//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2020, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class A
  {
public:
   virtual void      f(void)=0;
   virtual void      g(void) { Print(__FUNCSIG__); }
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class B : public A
  {
public:
   virtual void      f(void) { Print(__FUNCSIG__); }
   virtual void      g(void) { Print(__FUNCSIG__); }
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class C : public A
  {
public:
   virtual void      f(void) { Print(__FUNCSIG__); }
   virtual void      g(void) { Print(__FUNCSIG__); }
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void test(A *a)
  {
   a.f();
   a.g();

   if(CheckPointer(a)==POINTER_DYNAMIC)
      delete a;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnStart()
  {
   B b;
   C c;
   
   test(&b);
   test(&c);
   
   test(new B);
   test(new C);
  }
//+------------------------------------------------------------------+


Этот пример работает

 
Ilyas:


Этот пример работает

Виноват, ошибся. Работает.