- Принципы трейдинга - Торговля - MetaTrader 5 для Android
- Принципы трейдинга - Торговля - MetaTrader 5 для iPhone
- Статьи по разработке торговых приложений
Попробуйте так:
class Order; class Deal { public: double Price; //неважно Order* OrderCurrent; //Error 'Order' - declaration without type }; class Order { double param1; //неважно Deal deals[]; //Ссылки на сделки, которые порождены ордером };
Спасибо, совсем не догадался, что можно декларировать заранее. Но даже там нюанс уже нашел при перестановке местами.. Да, и про ссылки, указатели тоже тут...
В C# в этом плане всё гораздо нагляднее. Все переменные сложного типа -ссылки. Создаёшь новый объект через New и неважно ... А тут они сами создаются, если забыть поставить "указатель". Да и сборщика мусора нет. Короче ужас. всё намного более неудачнее.
class Order; class Deal; class Order { public: double param1; //неважно Deal * deals[]; //Ссылки на сделки, которые порождены ордером void AddDeal(Deal & deal ) { int len=ArraySize(deals); ArrayResize(deals,len+1); deals[len]=&deal; deal.CurentOrder=&this; } }; class Deal { public: double param1; //неважно Order * CurentOrder; //Ссылки на сделки, которые порождены ордером }; Order order1; Deal deal1; order1.param1=2; deal1.param1=2; order1.AddDeal(deal1); Order * test=deal1.CurentOrder;
Спасибо, совсем не догадался, что можно декларировать заранее. Но даже там нюанс уже нашел при перестановке местами.. Да, и про ссылки, указатели тоже тут...
В C# в этом плане всё гораздо нагляднее. Все переменные сложного типа -ссылки. Создаёшь новый объект через New и неважно ... А тут они сами создаются, если забыть поставить "указатель". Да и сборщика мусора нет. Короче ужас. всё намного более неудачнее.
Здесь Вам не там:) MQL по-своему хорош.
Я сейчас вспомнил как Алла Пугачёва отозвалась о Раймонде Паулсе: "Этот человек может даже из доски извлекать прекрасную музыку".
Это можно перефразировать на специалиста в любом деле.
Спасибо, совсем не догадался, что можно декларировать заранее. Но даже там нюанс уже нашел при перестановке местами.. Да, и про ссылки, указатели тоже тут...
В C# в этом плане всё гораздо нагляднее. Все переменные сложного типа -ссылки. Создаёшь новый объект через New и неважно ... А тут они сами создаются, если забыть поставить "указатель". Да и сборщика мусора нет. Короче ужас. всё намного более неудачнее.
В шарпе указатели вообще используются как unsafe и их использование - исключение из правил. В MQL4/5 реальных указателей, как в С/С++ нет, есть дескрипторы, но форма записи, как у указателей через *.
В новой версии МТ5 ввели указатели на функции, может, пригодится. Вот ссылка на статью, ниже вырезка про указатели на функции. https://www.mql5.com/ru/forum/23/page18#comment_2431727
---------------------------------
MQL5: Для облегчения организации событийных моделей добавлена поддержка указателей на функции.Чтобы объявить указатель на функцию, определите тип "указатель на функцию", например:
typedef int (*TFunc)(int,int);Теперь TFunc является типом и можно объявить переменную-указатель на функцию:
TFunc func_ptr;В переменную func_ptr можно сохранить адрес функции, чтобы в дальнейшем ее вызывать:
int sub(int x,int y) { return(x-y); } int add(int x,int y) { return(x+y); } int neg(int x) { return(~x); } func_ptr=sub; Print(func_ptr(10,5)); func_ptr=add; Print(func_ptr(10,5)); func_ptr=neg; // ошибка: neg не имеет тип int (int,int) Print(func_ptr(10)); // ошибка: должно быть два параметра
Указатели на функции можно хранить и передавать в качестве параметра. Нельзя получить указатель на нестатический метод класса.
- www.mql5.com
В mql ссылки тоже есть, для этого нужно в функции после типа параметра поставить символ &.
void OnStart() { //--- int tmpInteger = 42; Print(tmpInteger); //42 AddTen1(tmpInteger); Print(tmpInteger); //42 - без изменеий AddTen2(tmpInteger); Print(tmpInteger); //52 - изменение } //+------------------------------------------------------------------+ void AddTen1(int i){ i += 10; } void AddTen2(int& i){ i += 10; }
AddTen2 получит ссылку на переменную, и любые действия с ней отразятся и вне функции. А всё что без символа & - то не будет ссылкой, логика довольно проста :)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования