Передача структуры в класс

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Tango_X
713
Tango_X  

Здравствуйте! Помогите передать структуру в класс, в примере, приведенном ниже. У меня выдает ошибку  - 'myClass' - member function already defined with different parameters

//+------------------------------------------------------------------+
//|                                                         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
//+------------------------------------------------------------------+
//|                    Обьявление структуры                          |
//+------------------------------------------------------------------+
struct Getvalue
  {
   int               a;
   int               b;
   int               c;
  };
Getvalue value;
//+------------------------------------------------------------------+
//|                     Обьявление класса                            |
//+------------------------------------------------------------------+
class myClass
  {
private:
public:
                     myClass(Getvalue1 &_value1); // спасибо за подсказку - исправил
                    ~myClass();
  };
myClass::myClass(Getvalue &_value){Print(_value.a);}
myClass::~myClass(){}
//+------------------------------------------------------------------+
//|                  Обявление ссылки на класс                       |
//+------------------------------------------------------------------+

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);
  }
//+------------------------------------------------------------------+
Ilyas
1442
Ilyas  
Tango_X:

Здравствуйте! Помогите передать структуру в класс, в примере, приведенном ниже. У меня выдает ошибку  - 'myClass' - member function already defined with different parameters

У Вас отличаются конструкторы myClass, объявление и реализация имеют разные параметры

Tango_X
713
Tango_X  
Ilyas:

У Вас отличаются конструкторы 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 

Что не так?

Помогите!

Andrii Djola
2258
Andrii Djola  
Tango_X:

Но проблема остается с ошибкой - '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);
  }
//+------------------------------------------------------------------+
Tango_X
713
Tango_X  
Andrii Djola:

в файле MyClass объявлена структура Getvalue1, а передаете структуру Getvalue из файла индикатора. Удалите структуру Getvalue и все объявите "Getvalue1 value;" и все заработает

должно быть так

Спасибо, все заработало!

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий