Ошибки, баги, вопросы - страница 1184
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Сейчас так и сделано (перегружено как для объектов) и всё вроде бы устраивает. Но возникает противоречие между имеющими смысл (== и !=) и остальными
поскольку
Которое предлагаетcя устранить путем сравнения указателей только посредством специальной функции
Специальная функция для сравнения указателей может быть оформлена например так
У меня к вам нескромный вопрос. А вы делиться своими наработками будете?
Вы один из немногих, кто активно и постоянно использует шаблоны и макросы. И у вас наверное большой объем наработанного кода.
Не знаю как кому, а мне было бы очень интересно посмотреть ваш код и ваши наработки, если они есть такие, которые вы не против выложить на публику.
Я не знаю... реализация паттернов, свои обертки для работы с индикаторами, графиками, чем угодно...
Как я использую шаблоны? - Для сокращения записи. Например в MQL отсутствует операция запятая. Допустим есть запись
тогда имея шаблонtemplate<typename T1, typename T2> T2 opComma( T1 expression, T2 assignment_expression ) { return ( assignment_expression ); }вместо 4-х строк получаем - одну
Как я использую макросы? - опять же - для сокращения записи. Например в MQL отсутствуют шаблоны классов. Не беда - используем макрос
впоследствии достаточно будет объявить
datetime dt; MDT( dt_struct, dt )Побитовое копирование например реализую через шаблоны, поскольку в нем могут участвовать сразу несколько типов
Если принять обращение к функциям-членам только через (*a), то это не даст явных преимуществ, а наоборот - приведет к невозможности простого и понятного множественного применения операторов.
попробуйте переписать это с учетом Вашего предложения
А вместо указателя использовать сам объект нельзя, поскольку operator <<(...) может вернуть только указатель на объект.
Вы вероятно не правильно меня поняли. Я же не говорил о том, чтобы запретить текущую реализацию. Я просил сделать дополнительную возможность взятия ссылки либо указателя на объект, дабы не зависеть от прихотей компилятора. А как поступать в каждом конкретном случае - уже сам решу. Если мне потребуется сверхнадёжная программа, то вполне можно сделать и так, как вы описали. Да, замороченно. Но зато если потом метаквотсы вдруг введут специальное действие оператора << для указателей, то нам это уже не страшно.
Я же не говорил о том, чтобы запретить текущую реализацию. Я просил сделать дополнительную возможность взятия ссылки либо указателя на объект, дабы не зависеть от прихотей компилятора.
Если (b) - объект, то дополнительная возможность (&b) в дополнении к существующей GetPointer( b ) понятна - это приближение синтаксиса к С++.
Если (a) - указатель, то дополнительная возможность (*a) в дополнении к существующей (a) дает наверное разумный компромис
С одной стороны устраняется противоречие, с другой - не нарушается существующий порядок