Вопросы по ООП в MQL5 - страница 77

 
Vladimir Simakov:

Согласись, что уже посложнее)))

я вежливо промолчал, хотя хотел попросить пример не в лог выводить, а в файл - свое логирование практичнее и имеет смысл, а в логе терминала разбираться, что там вывел терминал, что какой ЕА - очень не удобно

 

Когда начнем крутить сложные связки коих еще в MQ нету?

 

знатокам стандартов, такой вопрос:

пока в МЕ бардак с выделением {}  , скопировал в пустой проект С++ в VS2019 код MQL, почему VS ругается на this:

struct SHash
{
  ulong hash[2];
  bool operator==(const SHash& value)const { return(this.hash[0] == value.hash[0] && this.hash[1] == value.hash[1]); }
};

пишет: "выражение должно иметь тип класса"

 
Igor Makanu:

знатока стандартов, такой вопрос:

пока в МЕ бардак с выделением {}  , скопировал в пустой проект С++ в VS2019 код MQL, почему VS ругается на this:

пишет: "выражение должно иметь тип класса"

а в С++ this это указатель..

или переопределяй * или явно указывай -> 

 
Maxim Kuznetsov:

а в С++ this это указатель..

или переопределяй * или явно указывай -> 

да вот приноровился втыкать этот this как во всех статьях тут пишут, в общем не писать где попало, вариантов внутри таких простых конструкций просто нет...понты, имхо

 
Igor Makanu:

знатокам стандартов, такой вопрос:

пока в МЕ бардак с выделением {}  , скопировал в пустой проект С++ в VS2019 код MQL, почему VS ругается на this:

пишет: "выражение должно иметь тип класса"

Вот так надо :

struct SHash
{
        long hash[2];
        bool operator==(const SHash& value)const { return(this->hash[0] == value.hash[0] && this->hash[1] == value.hash[1]); }
};
 
Andrei Novichkov:

Вот так надо :

мне в MQL нужно, VS как редактор загрузил, код полистать подумать может что увижу )))

но в такой структуре для MQL - смысл писать this ?  - по моему нет никакого смысла

 
Igor Makanu:

мне в MQL нужно, VS как редактор загрузил, код полистать подумать может что увижу )))

но в такой структуре для MQL - смысл писать this ?  - по моему нет никакого смысла

Надо бы проверить, но так, с первого взгляда, смысла this в данном выражении особого нет  не только в MQL )
 
Igor Makanu:

пишу еще и еще раз - располагаю временем (ибо не смотрю ТВ )) ) - собираю техническую информацию о возможностях языка, ООП... обо всем в чем появляются вопросы - форум активный, пользуюсь этой возможностью "на все сто" ;)

Вопрос то состоял в том, какой смысл пересаживаться с C# на MQL, если можно просто вызывать свой шарповский код из MQL.  Если конечно не стоит цель размещения в Маркете или оптимизации в MQ-облаке.

Просто ведь переход с C# на MQL, полагаю, реально болезненный )  После привыкания к удобству и лёгкости работы с объектами, где не нужно беспокоиться об их удалении, то здесь получаешь всё наоборот.  Так или иначе, полноценное ООП предполагает наличие счётчика ссылок у ссылочных объектов.  И в C++ это решается с помощью обёртки - умного указателя.  В MQL же умные указатели использовать очень муторно из-за отсутствия оператора ->, и других проблем.

Ну в общем, если при переходе с C++ всё более-менее ясно:  получаешь кучу неудобств и ограничений, но в целом нечто близкое. И даже некоторые плюсы (например, повышенная надёжность при выполнении, ввиду наличия управляемой среды).  А вот при переходе с шарпа я не вижу ни одного плюса. Только минусы )

 
Igor Makanu:

да вот приноровился втыкать этот this как во всех статьях тут пишут, в общем не писать где попало, вариантов внутри таких простых конструкций просто нет...понты, имхо

Здесь вообще много спорной стилистики насаждается))) Тот же

return (retValue);

Зачем скобки? Это же не JS, хотя и там тоже не обязательно.

А если очень уж нужно this и что бы он в плюсах правильный был, то вместо this макроподстановку

#ifdef __cplusplus
   #define THIS *this
#else
   #define THIS this
#endif