Скачать MetaTrader 5

Почему в MQL5 запрещено использование классов без создания их экземпляров на статическом уровне?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Vasiliy Sokolov
22585
Vasiliy Sokolov 2010.07.23 13:38 

В MQL5 есть ключевое слово

static 

Это вроде бы должно подразумевать вызов методов без создания экземпляров самого класса. Допустим имеем класс TOrders:

 

static class TOrders
{
public:
int GetOrdersTotal()const;
};

int TOrders::GetOrdersTotal() const
{
return(OrdersTotal());
}

 

Теперь вызываем функцию прямо из класса, без создания экземпляра:

TOrders me; 

void OnTick()
{
   
  TOrders.GetOrderTotal(); <-- А вот так почему-то нет.
  me.GetOrdersTotal(); <-- Так можно
}

 Странно, ведь TOrders объявлен как статический класс. Явное создание экземляра при этом требоваться не должно. Вообще эта штука довольно удобная, более половины всех вспомогательных классов могли бы быть статическими. Явное создание экземпляров в них совершенно излишне.
Документация по MQL5: Основы языка / Функции / Вызов функции
Документация по MQL5: Основы языка / Функции / Вызов функции
  • www.mql5.com
Основы языка / Функции / Вызов функции - Документация по MQL5
Ilyas
1209
Ilyas 2010.07.23 13:46  
К сожалению, static для методов и членов класса пока не поддерживается компилятором. Вопрос по его введению открыт и пока его рассмотрение отложено.

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