Новая версия платформы MetaTrader 4 build 1170 - страница 27

 
fxsaber:
Уберите this.
class A
  {
   public:
      void           Test(const bool test){}
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class B : public A
  {
      void           Test(void){}
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class C
  {
   public:
      //===============
      B              b;
      //===============
      void           Test(const bool test){b.A::Test(test);}//'::' - syntax error	test.mq4
      //===============
  };

Хоть с this, хоть без него....

 
Andrey Barinov:

Хоть с this, хоть без него....

Здесь другой случай. Приведите к базовому классу объект.
 
fxsaber:
Здесь другой случай. Приведите к базовому классу объект.

Под пятерку и так компилируется.

Я не хочу приводить ничего никуда.

Хочется чтобы поведение было одинаковым под МТ4 и МТ5

 

Andrey Barinov:

Я не хочу приводить ничего никуда.

Хочется чтобы поведение было одинаковым под МТ4 и МТ5

Если сделать, как сказал, то будет одинаковое поведение в обеих платформах.

 
fxsaber:

Если сделать, как сказал, то будет одинаковое поведение в обеих платформах.

Т.е. Вы считаете что так как есть компилироваться не должно?

 
Andrey Barinov:

Т.е. Вы считаете что так как есть компилироваться не должно?

Считаю, что предложенный вариант в MT5 - нововведение, которое должно быть добавлено и в MT4.

Но если писать код по-старинке, то работать будет везде.

     void           Test(const bool test){((A)b).Test(test);}
 
class A
  {
public:
  virtual bool       Test(const bool test) {return(true);}
  };
class B : public A
  {
   void       Test(void) {Test(true);}
  };

Даже слово virtual не помогает снять варинг

 
Anton Iaroshenko #:

Даже слово virtual не помогает снять варинг

this.A::Test(true)
Причина обращения: