Почему перестал работать код?
Не может быть, что бы такое раньше работало.
В 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); } //+------------------------------------------------------------------+
Спасибо! Вот так работает:
Мне кажется, в последней строке GetPointer - лишний. И, строго говоря, должна быть ошибка.
Вы создаете по new объект типа MyClass, и указатель на него получаете в переменной Instance.
Это УЖЕ указатель.
А вы функцией GetPointer - получаете "указатель на указатель" - это неверно, даже если компилятор "съел" такую конструкцию.
Просто передавайте в Add непосредственно Instance:
MyList.Add(Instance);
Спасибо! Вот так работает:
Так писали, что билд не при чем ))
Компилятор выдает ошибку на выражении "MyList.Add(Instance);" - "'Instance' - parameter conversion not allowed".