Почему перестал работать код?

 
Код компилился в старых билдах MT5, теперь подобная конструкция не работает. Почему?

Компилятор выдает ошибку на выражении "MyList.Add(Instance);" - "'Instance' - parameter conversion not allowed".

//+------------------------------------------------------------------+
#include <Arrays\List.mqh>

CList *MyList=new CList;

class MyClass 
   {
    public:
    MyClass(void);
   };
   
MyClass::MyClass(void)
{
return;
}

void OnStart()
  {
   MyClass Instance();
   MyList.Add(Instance);
  }
//+------------------------------------------------------------------+


 

Не может быть, что бы такое раньше работало.

В MyList.Add() нужно передавать указатель на CObject. Значит MyClass должен быть дочерним от CObject, и его объект должен создаваться через new использовать GetPointer(Instance). 
 
Спасибо! Вот так работает (поправил с учетом последующих комментариев):
//+------------------------------------------------------------------+
#include <Arrays\List.mqh>

CList *MyList=new CList;

class MyClass : public CObject
   {
    public:
    MyClass(void);
   };
MyClass::MyClass(void)
{
return;
}

void OnStart()
  {
   MyClass *Instance=new MyClass;
   MyList.Add(Instance);
  }
//+------------------------------------------------------------------+
 
axmed0207:
Спасибо! Вот так работает:

Мне кажется, в последней строке GetPointer - лишний. И, строго говоря, должна быть ошибка.

Вы создаете по new объект типа MyClass, и указатель на него получаете в переменной Instance.

Это УЖЕ указатель.

А вы функцией GetPointer - получаете "указатель на указатель" - это неверно, даже если компилятор "съел" такую конструкцию.

Просто передавайте в Add непосредственно Instance:

MyList.Add(Instance);

 
axmed0207:
Спасибо! Вот так работает:

Так писали, что билд не при чем ))
Причина обращения: