object pointer expected

 

Что это значит? ОБъект я передаю по указателю в функцию, а компилятор не замечает этого.

В боте на глобальном уровне:

SymbolInstance *symbol;

В OnInit() так:

int OnInit() {
//---
  symbol = new SymbolInstance(i_symbol);
  prSignal = new Signal(symbol);
  prOrdersHandling = new OrdersHandling(i_tryCount);
//---
  return INIT_SUCCEEDED;
}

А вот в самом классе Signal, который мы создаёт в OnInit() и через параметры передаём этот указатель symbol  в конструкторе:

Signal :: Signal(SymbolInstance *ptrSymbol) {    // Указатель на класс свойств торгового инструмента
  m_ptrSymbol = ptrSymbol;
  ptrZZ = new ZZIndicator(m_ptrSymbol, i_ZZ_extremumCountToCollect);
  createZigZag();
}

компилятор ругается в строке:

Signal :: Signal(SymbolInstance *ptrSymbol) {    // Указатель на класс свойств торгового инструмента

Вот так:

'ZZIndicator' - wrong parameters count  Signal.mqh      62      11

Как это понимать?

 
hoz:

Что это значит? ОБъект я передаю по указателю в функцию, а компилятор не замечает этого.

В боте на глобальном уровне:

В OnInit() так:

А вот в самом классе Signal, который мы создаёт в OnInit() и через параметры передаём этот указатель symbol  в конструкторе:

компилятор ругается в строке:

Вот так:

Как это понимать?

Неверное кол-во аргументов при вызове  ZZIndicator...

//с уважением, оператор google translate  //

вы где-то (строка 62, символ 11) ошиблись с числом аргументов..

 
Maxim Kuznetsov:

Неверное кол-во аргументов при вызове  ZZIndicator...

//с уважением, оператор google translate  //

вы где-то (строка 62, символ 11) ошиблись с числом аргументов..

Я прекрасно понимаю, что пишет компилятор. Вопрос не в этом. Вот скрин:

Касяк какой-то странный

Видно, что ругать на количество параметров конструктора. А у конструктора всего 1 параметр и это указатель..

 

Кстати, конструктор, который вызывается на пру строк ниже класса ZZIndicator вот вместе с описаниями членов класса:

class ZZIndicator {
  private:
    SymbolInstance *m_ptrSymbol;
    ZZProperties   m_ZZProperties[];
    int            m_handle;
  public:
    //---- Конструктор и деструктор
    ZZIndicator(SymbolInstance *prSymbol, const int extremumCountToCollect);
   ~ZZIndicator(void);
    //---- Свойства
    ZZProperties  getExtremumProperties(int index);
    void          setSequenceProperties(ZZProperties& stZZProperties[], int extremumCounter, int sequenceIndex, const double extremumPrice);
    //---- Методы
    bool          createInstance(int inputParametersCount, MqlParam& parameters[], string symbolName = NULL, ENUM_TIMEFRAMES TF = PERIOD_CURRENT, ENUM_INDICATOR indicatorType = IND_CUSTOM);
    void          selectionRequiredSequence(const string symbolName = NULL);
    void          printZZProperties(void) const;
};
//==================================================================================================================================================================================
// Конструктор класса. =============================================================================================================================================================
ZZIndicator :: ZZIndicator(SymbolInstance *prSymbol,              // Указатель на класс свойств торгового инструмента
                           const int extremumCountToCollect) {    // Количество экстремумов зиг-зага, с которыми работает совок
  ArrayResize(m_ZZProperties, extremumCountToCollect);
}

Всё чётко сходится по количеству. Поэтому я и написал, что это странно как-то..

 
hoz:

Кстати, конструктор, который вызывается на пру строк ниже класса ZZIndicator вот вместе с описаниями членов класса:

Всё чётко сходится по количеству. Поэтому я и написал, что это странно как-то..

навскидку - ptrZZ вы забыли * и объявили просто объектом

PS/ частая ошибка при переключении с C# туда-обратно

 
Maxim Kuznetsov:

навскидку - ptrZZ вы забыли * и объявили просто объектом

PS/ частая ошибка при переключении с C# туда-обратно

Я тоже изначально об этом подумал, но, тем не менее. Вот я за пару минут всё показал:


Ничего как я вижу не напитано. Хотя я уже не уверен даже ((

 
hoz:

Я тоже изначально об этом подумал, но, тем не менее. Вот я за пару минут всё показал:


Ничего как я вижу не напитано. Хотя я уже не уверен даже ((

В общем, вопрос в другом был. Компилятор недоделанный. Пишет одно, а на деле - другое..

 

Компилятор Вам всё правильно пишет.

Вы не определили конструктор без аргументов в классе ZZIndicator.

 
Koldun Zloy:

Компилятор Вам всё правильно пишет.

Вы не определили конструктор без аргументов в классе ZZIndicator.

Не в этом дело. Тип переменной был не тот. Но я это уже сам нашёл, без помощи чудесного компилятора.

 

А могли бы и с помощью.

То что Вы объявили объект класса вместо указателя, для компилятора не ошибка.

Поэтому он честно пытается его создать и не находит нужного конструктора.

 
Koldun Zloy:

А могли бы и с помощью.

То что Вы объявили объект класса вместо указателя, для компилятора не ошибка.

Поэтому он честно пытается его создать и не находит нужного конструктора.

Так компилятор ругался вообще на другой указатель. Хотя вопрос в другом был. Тут как-бы не просто найти, когда проект достаточно сложный. Пришлось принтовать и в отладке всё смотреть.