Alexey Volchanskiy: Алексей, я за, но надо не сюда, а сделать голосование. Вот тут есть некоторые костыли, на MQL не пробовал http://rsdn.ru/article/vcpp/props.xml
Что-то там проблема с кодировкой по вашей ссылке. У меня кракозябры сплошные выдаёт. Но я понял, о чём речь, я когда-то уже читал про эти костыли. В MQL оно не реализуемо на данный момент, т.к. не поддерживается перегрузка оператора приведения. Да и не стоит оно того, слишком уж костыльно. А вот штатная фича в VS очень удобна, особенно если обернуть в макрос. И никаких дополнительных ресурсов не потребляет. Так вот и в MQL тоже давно пора вводить проперти. А то как-то всё коряво выглядит без них.
Разобрался, нашел баг в компиляторе MQL4. Вот такая ошибка по невнимательности убила 2 дня на поиск... Суть в следующем, приведу простейший код. Ошибки компиляции или варнинга не возникает, возникает ошибка выполнения.
double ptest = double(test); // тут должна быть ошибка компиляции!!!
Напомните плиз, как сортировать символы в окне обзоре рынка (МТ4, МТ5). У меня на одном терминале красиво отсортированы, на другом - полный бардак. Сортировал давно - как делал не помню. В документации по этому поводу - ничего, кроме перетаскивания символов по одному на новое место. Но я точно так не делал - это убиться можно весь список вручную сортировать. :-/
Vasiliy Sokolov: Нельзя класс привести к значимому типу, даже явно. Однозначно ошибка.
Там не класс, а указатель, а указатель это число.
class A{};
void f()
{
A *a;
int i = int(a);
}
C++ компилирует без ошибок
Если запретить прямое явное преобразование в double, то в следующий раз у него вместо double будет int с тем же результатом и опять будет компилятор виноват. Нужно отличать свои ошибки от ошибок компилятора.
Там не класс, а указатель, а указатель это число - учите матчасть.
C++ компилирует без ошибок
Если запретить прямое явное преобразование в double, то в следующий раз у него вместо double будет int с тем же результатом и опять будет компилятор виноват. Нужно отличать свои ошибки от ошибок компилятора.
Нет там никакого указателя, ибо в MQL4/5 указателей не существует. Есть дескрипторы.
----------------------
Получил ответ из сервисдеска
Support Team2015.08.24 09:44
Спасибо за сообщение, исправим. Действительно, тут должна быть ошибка компиляции.
Support Team2015.08.24 14:39
Статус: ОткрытаЗакрыта
Спасибо за сообщение, исправлено. Теперь компилятор будут выдавать ошибку компиляции.
Безусловно, с точки зрения "как это хранится в памяти", Вы правы. Но приводить дескриптор к числу или наоборот, нет смысла и скорее всего это ошибка в коде. В скором будущем, если в классе будет перегружен соответствующий оператор преобразования, то будет вызван он.
Я, честно говоря, не увидел ничего плохого в этом приведении, учитывая что оно явное. Почему тут должна была быть ошибка? Если кто-то хочет получить численное значение дескриптора, то в этом нет никакой ошибки.
Алексей, я за, но надо не сюда, а сделать голосование. Вот тут есть некоторые костыли, на MQL не пробовал http://rsdn.ru/article/vcpp/props.xml
Что-то там проблема с кодировкой по вашей ссылке. У меня кракозябры сплошные выдаёт. Но я понял, о чём речь, я когда-то уже читал про эти костыли. В MQL оно не реализуемо на данный момент, т.к. не поддерживается перегрузка оператора приведения. Да и не стоит оно того, слишком уж костыльно. А вот штатная фича в VS очень удобна, особенно если обернуть в макрос. И никаких дополнительных ресурсов не потребляет. Так вот и в MQL тоже давно пора вводить проперти. А то как-то всё коряво выглядит без них.
Разобрался, нашел баг в компиляторе MQL4. Вот такая ошибка по невнимательности убила 2 дня на поиск... Суть в следующем, приведу простейший код. Ошибки компиляции или варнинга не возникает, возникает ошибка выполнения.
Не нужно здесь никакой ошибки. Тут явное приведение типа. Было бы в VS так
что бы это принципиально изменило?Не нужно здесь никакой ошибки. Тут явное приведение типа
Нельзя класс привести к значимому типу, даже явно. Однозначно ошибка.
Там не класс, а указатель, а указатель это число.
C++ компилирует без ошибок
Если запретить прямое явное преобразование в double, то в следующий раз у него вместо double будет int с тем же результатом и опять будет компилятор виноват. Нужно отличать свои ошибки от ошибок компилятора.
Там не класс, а указатель, а указатель это число - учите матчасть.
C++ компилирует без ошибок
Если запретить прямое явное преобразование в double, то в следующий раз у него вместо double будет int с тем же результатом и опять будет компилятор виноват. Нужно отличать свои ошибки от ошибок компилятора.
Нет там никакого указателя, ибо в MQL4/5 указателей не существует. Есть дескрипторы.
----------------------
Получил ответ из сервисдеска
Действительно, тут должна быть ошибка компиляции.
Support Team 2015.08.24 14:39
Нет там никакого указателя, ибо в MQL4/5 указателей не существует. Есть дескрипторы.
Дескритор это все равно конкретное число
Но приводить дескриптор к числу или наоборот, нет смысла и скорее всего это ошибка в коде.
В скором будущем, если в классе будет перегружен соответствующий оператор преобразования, то будет вызван он.
В скором будущем, если в классе будет перегружен соответствующий оператор преобразования, то будет вызван он.