Скачать MetaTrader 5

Передача объекта по ссылке - страница 2

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

 Получается в моём случае например, в самом классе конструктор:

BaseInfo (Symbol_Properties& SSym);

И метод:

void     GetMarkerInfo (string fs_Symbol, Symbol_Properties& SSym, Position_Properties& SPos, int fi_Ticket = 0);

 Будут такие как я написал?

А описании их вне метода у меня так:

// Конструктор класса. ====================================================================================================================
BaseInfo::BaseInfo (Symbol_Properties& SSym)
{
   //---- Инициализируем закрытые переменные input-значениями
   SetBootstrap (ib_Bootstrap);
   SetRealTrade (ib_RealTrade);
   SetVirtualTrade (ib_VirtualTrade);
   //---- Инициализируем другие данные необходимые для работы класса
   ExpertName = StringConcatenate (WindowExpertName(), ":  ", GetNameTF (_Period), "_", _Symbol);
   RealTrade = (!IsTesting() && !IsOptimization());
   VirtualTrade = (IsOptimization() || (IsTesting() && !IsVisualMode()));
   if ( SSym.gd_Pt == 0.0 )
       {SSym.gd_Pt = GetPoint (_Symbol);}
   GetMarkerInfo (_Symbol, SSym, SPos, -1);
   SLots.gd_MinLot = MarketInfo (_Symbol, MODE_MINLOT);
   SLots.gd_MaxLot = MarketInfo (_Symbol, MODE_MAXLOT);
   SLots.gd_LotStep = MarketInfo (_Symbol, MODE_LOTSTEP);
   SLots.gd_LotSize = MarketInfo (_Symbol, MODE_LOTSIZE);
   SLots.gi_LotDecimal = LotDecimal();
   CArraysMan.InitializeArraySTR (Comments, "");
   //---- Определение индекса " ошибок " в массиве комментариев Comments[]
   IndErr = ArraySize (Comments) - 1;
   //---- Контроль возможных ошибок
}

 

// 1.1 Получение рыночной информации по выбранному инструменту. ===========================================================================
BaseInfo::GetMarkerInfo (string                 fs_Symbol,       // Торговый инструмент, по которому нужно собрать информацию
                         Symbol_Properties&     SSym,            // Объект указывающий на структуру свойств позиции
                         Position_Properties&   SPos,            // Ссылка на объект свойств позиции
                         int                    fi_Ticket = 0)   // Тикет интересующей нас позиции
{


}

 Верно? Я привык что методы в описании и в объявлении одинаковый заголовок имеют, вот и..

 Вот такая ошибка вылазит:

declaration of 'SSym' hides global declaration in file 'MarketData.mqh' at line 32      BaseInfo.mqh    66      40
hoz
1936
hoz  

На данный момент я сделал объект членом класса BaseInfo. Так всё работает. Но вопрос остаётся открыт. Как реализовать передачу по ссылке в моём случает объекта структуры любой их присутствующих в класс BaseInfo?

Dmitry Fedoseev
44574
Dmitry Fedoseev  

С классами и структурами при передаче их в функции так же как с простыми переменными. Представьте, что вместо "Symbol_Properties&     SSym" написано "int & SSym" - указывается какого типа параметр принимает функция.  Потом, чтобы в эту функцию передать параметр, он должен быть. Т.е. где-то должна быть объявлена переменная типа int. С классами и структурами так же, только они по ссылке могут передаваться. При объявлении вмеcто int пишется Symbol_Properties.

hoz
1936
hoz  
В общем, я и так всё понимал. Но видать перестарался. Немного передохнул всё взвесил и понял где был косяк. Вопрос снят.
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий