У Вас отличаются конструкторы myClass, объявление и реализация имеют разные параметры
myClass(Getvalue1 &_value1); // спасибо за подсказку - исправил
Но проблема остается с ошибкой - 'value' - parameter conversion not allowed , если перенести класс в отдельный файл
К примеру вот класс
//+------------------------------------------------------------------+ //| MyClass.mqh | //| Copyright 2018, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2018, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" struct Getvalue1 { int a; int b; int c; }; Getvalue1 _value1; //+------------------------------------------------------------------+ //| Обьявление класса | //+------------------------------------------------------------------+ class myClass { private: public: myClass(Getvalue1 &_value1); ~myClass(); }; myClass::myClass(Getvalue1 &_value){Print(_value.a);} myClass::~myClass(){} //+------------------------------------------------------------------+
А здесь собственно программа
//+------------------------------------------------------------------+ //| Test.mq5 | //| Copyright 2018, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2018, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property indicator_chart_window #include <MyClass.mqh> //+------------------------------------------------------------------+ //| Обьявление структуры | //+------------------------------------------------------------------+ struct Getvalue { int a; int b; int c; }; Getvalue value; myClass *my_class; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping new myClass(value); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //--- //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+
В итоге при компиляции получаем 'value' - parameter conversion not allowed
Что не так?
Помогите!
Но проблема остается с ошибкой - 'value' - parameter conversion not allowed , если перенести класс в отдельный файл
К примеру вот класс
А здесь собственно программа
В итоге при компиляции получаем 'value' - parameter conversion not allowed
Что не так?
Помогите!
в файле MyClass объявлена структура Getvalue1, а передаете структуру Getvalue из файла индикатора. Удалите структуру Getvalue и все объявите "Getvalue1 value;" и все заработает
должно быть так//+------------------------------------------------------------------+ //| Test.mq5 | //| Copyright 2018, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2018, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property indicator_chart_window #include <MyClass.mqh> Getvalue1 value; myClass *my_class; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping new myClass(value); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //--- //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+
в файле MyClass объявлена структура Getvalue1, а передаете структуру Getvalue из файла индикатора. Удалите структуру Getvalue и все объявите "Getvalue1 value;" и все заработает
должно быть такСпасибо, все заработало!
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте! Помогите передать структуру в класс, в примере, приведенном ниже. У меня выдает ошибку - 'myClass' - member function already defined with different parameters