Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Typeid() к сожалению нет, а сила шаблонов в статической идентификации. Разные задачи решаются разными методами и говорить что один метод бяка, а другой хорош - агульное допущение.
Был у меня случай, когда нужна была динамическая идентификация. Все решения были очень громоздки, кроме универсального типа. Сделал через класс, реализующий универсальный тип.
Но тоже беда. Что-то с VS 2012 изменилось в STL (string) и, начиная с неё, не компилируется. Не разбирался ещё.
Х.з, не указатели, а смех на палке.
На странице по второй ссылке в моем посте написано:
В MQL4 существует возможность динамически создавать объекты сложного типа. Это делается при помощи оператора new, который возвращает описатель созданного объекта.
Описатель имеет размер 8 байт. Синтаксически описатели объектов в MQL4 похожи на указатели в C++.
Примеры:
MyObject* hobject= new MyObject();
Еще раз повторим, что в отличие от C++, переменная hobject из вышеприведенного примера не является указателем на память, а является дескриптором объекта.
На странице по второй ссылке в моем посте написано:
В MQL4 существует возможность динамически создавать объекты сложного типа. Это делается при помощи оператора new, который возвращает описатель созданного объекта.
Описатель имеет размер 8 байт. Синтаксически описатели объектов в MQL4 похожи на указатели в C++.
Примеры:
MyObject* hobject= new MyObject();
Еще раз повторим, что в отличие от C++, переменная hobject из вышеприведенного примера не является указателем на память, а является дескриптором объекта.
Не ранее как вчера я задал в тех. поддержку вопрос касательно отделения файла с реализацией класса от файла-интерфейса. И получил ответ:
В MQL нет файла проекта, фактически им выступает mq4 файл, а программа обязана иметь точки входа (при их отсутствии выдаётся ошибка "event handling function not found"). Поэтому при разделении интерфейса от реализации класса, файлом-реализации и интерфейса должны быть mqh файлы.
Суть такая, что это по сути является не логичным вариантом. Ведь файл с реализацией класса на то он и и файл с реализацией, чтобы его защищать от клиентов. А если и то и то в открытом виде, т.е. в формате .mqh, то зачем тогда вообще это делать?
Не ранее как вчера я задал в тех. поддержку вопрос касательно отделения файла с реализацией класса от файла-интерфейса. И получил ответ:
Суть такая, что это по сути является не логичным вариантом. Ведь файл с реализацией класса на то он и и файл с реализацией, чтобы его защищать от клиентов. А если и то и то в открытом виде, т.е. в формате .mqh, то зачем тогда вообще это делать?
Никогда не разделяю объявление от реализации. Всё пишу в заголовочном файле. Это значительнее удобнее. Надо следить за одним файлом, а не за двумя. Хорошо ещё, если в классе всего три метода. А, если 100? Замучаешься сравнивать два файла. В одном напишешь, в другом забудешь и др...
Есть только один случай, когда надо разделить. Это, когда два и более классов взаимно ссылаются друг на друга. Надо бы избегать таких решений. Это касается С++. В MQL не знаю, как это делается.
В учебнике, а в частности вот коды:
Имеются такие поля:
Почему знак * в одном случае справа, а в другом - слева?В учебнике, а в частности вот коды:
Имеются такие поля:
Почему знак * в одном случае справа, а в другом - слева?Так написано. Это неважно.
Сам пишу оператор "*" для обозначения указателя рядом с типом справа от него (int*), а при разыменовании рядом с переменной слева от неё (*pnVal).
Так написано. Это неважно.
Сам пишу оператор "*" для обозначения указателя рядом с типом справа от него (int*), а при разыменовании рядом с переменной слева от неё (*pnVal).
Я так и думал. Видать невнимательный программист писал пример.
Есть там ещё странные вещи:
Это значит что классу CItem присваивается описатель объекта m_next?
В учебнике, а в частности вот коды:
Имеются такие поля:
Почему знак * в одном случае справа, а в другом - слева?Он не слева и не справа, он между.
Я так и думал. Видать невнимательный программист писал пример.
Есть там ещё странные вещи:
Это значит что классу CItem присваивается описатель объекта m_next?
Это значит надо будет создавать экземпляр оператором new.