Ошибки, баги, вопросы - страница 1357
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Да и кстати чё-то я не понял из приведённого кода, в каком там месте будет вызываться operator== ? Там идёт просто сравнение двух лонгов и всё
...
IsEqualPointer может быть как шаблоном, так и общей функцией подобной ::GetPointer
Что-то я совсем перестал вас понимать. Не могли бы пояснить по-человечески, что вы пытаетесь сделать? Приведённый код у вас с ошибками (оператор== не имеет ни аргумента, ни возвращаемого значения), сложно что-то понять из всего этого.
Сразу скажу, проблема сравнения/присвоения указателей и не стояла никогда, для этого достаточно GetPointer(a)==GetPointer(b). Поэтому задача относится только к сравнению/присвоению самих объектов. Т.е. гарантированно провести эти операции, независимо от того, чем представлены эти объекты: указателями или ссылками
Приведённый код у вас с ошибками (оператор== не имеет ни аргумента, ни возвращаемого значения), сложно что-то понять из всего этого.
GetPointer(a)==GetPointer(b) приведет к вызову a.operator==( b )
Кстати, а как насчёт введения в MQL операторов * и & для возможности явного обращения к объекту в первом случае, и взятия указателя объекта во втором (вместо громоздкого GetPointer). Причём звёздочка необходима просто позарез. Её заменить в языке нечем. Без этого невозможно контролировать такие ситуации, как привёл A100 чуть выше, что вместо самих объекта производятся какие-то действия с указателями. Лично для меня это постоянная проблема, приходится всегда быть начеку, либо везде явно указывать A.operator=(B), A.operator!=(B), т.е. теряется лаконичность, и перегрузка операторов фактически лишается смысла.
Я как-то уже поднимал эту проблему, но тема заглохла. Давайте уже добьём этот вопрос наконец.
То с этим я согласен, обязательно подниму данный вопрос и мы это обсудим.
С чего это вдруг?
...
Если уравнять operator== с operator<, то и результат уравняется
Уважаемый, ну вы ведь даже не проверяли то, что предлагаете! Равно как и в предыдущем случае, когда в коде были явные ошибки, т.е. вы даже не пытались это компилировать. Набросали что-то на коленке, какие-то свои мысли, типа "хавайте пока я добрый, не жалко"... Разве так можно? Давайте не будем заниматься подобной ерундой.
Я сам постоянно сравниваю указатели и перегружаю операторы, и никогда не было того, о чём вы сейчас фантазируете. Вот и сейчас проверив ваш код, никаких чудес не случилось, оператор== не запускается, как и положено.
Вот и сейчас проверив ваш код, никаких чудес не случилось, оператор== не запускается, как и положено.
Суть предложения как раз и состоит в том чтобы запускался.
Это ещё зачем? Всё с ног на голову.
Логичнее как раз наоборот: чтобы < и > приводило к сравнению указателей.