Вы сами 4ую ошибку сообщили. А чем ZeroMemory хуже {} ? Т.е. имеем некий несанкционированный механизм доступа к private, который компилятор почему то не обнаруживает.
Расчет на то, что Разработчики не будут это исправлять? Когда то компилятор и на ZeroMemory не реагировал
Вы сами 4ую ошибку сообщили. А чем ZeroMemory хуже {} ? Т.е. имеем некий несанкционированный механизм доступа к private, который компилятор почему то не обнаруживает.
Мне не видится это ошибкой. Структура без конструктора, идет инициализация. FileReadStruct - тогда совсем страшная вещь...
Мне не видится это ошибкой. Структура без конструктора, идет инициализация. FileReadStruct - тогда совсем страшная вещь...
uintFileReadStruct(
int file_handle, // handle файла constvoid& struct_object, // структура, куда происходит считывание int size=-1// размер структуры в байтах
);
Ссылки на документацию без учета артефактов копи-пасты - странно.
Я вообще 1ый раз эту функцию вижу - могли бы и сообщить, что там в описании ошибка
Кроме описания там еще и структурная ошибка:
struct X {
X( int i ) : i( i ) {}
constint i;
};
voidOnStart()
{
X x( 5 );
FileReadStruct( 0, x, -1 ); //(1) нормально ???
ZeroMemory( x ); //(2) Error: 'x' - not allowed for objects with protected members or inheritance
}
А чем ZeroMemory хуже FileReadStruct ?
Опять расчет на то, что Разработчики не заметят\отложат\будет лень исправлять(нужное подчеркнуть) ?
Мой аргумент простой: когда то и ZeroMemory то же со всем этим (и private в том числе) компилировалось, но заметили\дошли руки\исправили
Вы же любите ссылаться на документацию. Там про ограничения ZeroMemory все написано. А про ограничения File* - нет. По ZeroMemory исхожу из того, что есть. Сейчас неудобно, но сделано, похоже, специально.
Если же сравнивать эти две функции, то FileReadStruct работает только с простыми структурами. В этом принципиальное отличие.
Эта тема про особенности MQL5. Указал на такую (в MQL4 не пашет). Данный диалог - к сожалению, бесцельно потраченное время
Вы же любите ссылаться на документацию. Там про ограничения ZeroMemory все написано. А про ограничения File* - нет. По ZeroMemory исхожу из того, что есть. Сейчас неудобно, но сделано, похоже, специально.
Если же сравнивать эти две функции, то FileReadStruct работает только с простыми структурами. В этом принципиальное отличие.
Ошибка есть (просто компилятор в данный момент о ней не сообщает) и заключается она в том, что некая функция (а именно FileReadStruct) внешняя по отношению к классу получает прямой доступ к защищенным членам этого класса, что противоречит самой концепции private, protected.
А чем эта функция лучше ZeroMemory и сотен других? А ничем! - просто у Разработчиков еще руки не дошли до нее. Раньше у ZeroMemory в документации тоже не было указано ограничений. А сейчас есть - и не потому чтобы доставить Вам какие то неудобства - а потому что единый прицип действует - что FileReadStruct, что ZeroMemory, что сотня других подобных функций - все равны
Это Вы себе в ногу стреляете - объявлением private. Сами себе ограничили доступ и потом будете удивляться почему код, где внешним функциям нужен public доступ вдруг перестал работать
Вы сами 4ую ошибку сообщили. А чем ZeroMemory хуже {} ? Т.е. имеем некий несанкционированный механизм доступа к private, который компилятор почему то не обнаруживает.
Расчет на то, что Разработчики не будут это исправлять? Когда то компилятор и на ZeroMemory не реагировал
Вы сами 4ую ошибку сообщили. А чем ZeroMemory хуже {} ? Т.е. имеем некий несанкционированный механизм доступа к private, который компилятор почему то не обнаруживает.
Мне не видится это ошибкой. Структура без конструктора, идет инициализация. FileReadStruct - тогда совсем страшная вещь...
Мне не видится это ошибкой. Структура без конструктора, идет инициализация. FileReadStruct - тогда совсем страшная вещь...
Судя по описанию - это какой то самообман
Судя по описанию - это какой то самообман
Ну, да - сплошной обман.
Судя по описанию - это какой то самообман
Ссылки на документацию без учета артефактов копи-пасты - странно.
Ссылки на документацию без учета артефактов копи-пасты - странно.
Я вообще 1ый раз эту функцию вижу - могли бы и сообщить, что там в описании ошибка
Кроме описания там еще и структурная ошибка:
А чем ZeroMemory хуже FileReadStruct ?
Опять расчет на то, что Разработчики не заметят\отложат\будет лень исправлять(нужное подчеркнуть) ?
Мой аргумент простой: когда то и ZeroMemory то же со всем этим (и private в том числе) компилировалось, но заметили\дошли руки\исправили
Я вообще 1ый раз эту функцию вижу - могли бы и сообщить, что там в описании ошибка
Ни разу не смотрел описание этой функции. Из названия все ясно.
Кроме описания там еще и структурная ошибка:
В следующем коде нет ошибок.
Занудство не победит удобство!
А чем ZeroMemory хуже FileReadStruct ?
Вы же любите ссылаться на документацию. Там про ограничения ZeroMemory все написано. А про ограничения File* - нет. По ZeroMemory исхожу из того, что есть. Сейчас неудобно, но сделано, похоже, специально.
Если же сравнивать эти две функции, то FileReadStruct работает только с простыми структурами. В этом принципиальное отличие.
Эта тема про особенности MQL5. Указал на такую (в MQL4 не пашет). Данный диалог - к сожалению, бесцельно потраченное время
В следующем коде нет ошибок.
Вы же любите ссылаться на документацию. Там про ограничения ZeroMemory все написано. А про ограничения File* - нет. По ZeroMemory исхожу из того, что есть. Сейчас неудобно, но сделано, похоже, специально.
Если же сравнивать эти две функции, то FileReadStruct работает только с простыми структурами. В этом принципиальное отличие.
Ошибка есть (просто компилятор в данный момент о ней не сообщает) и заключается она в том, что некая функция (а именно FileReadStruct) внешняя по отношению к классу получает прямой доступ к защищенным членам этого класса, что противоречит самой концепции private, protected.
А чем эта функция лучше ZeroMemory и сотен других? А ничем! - просто у Разработчиков еще руки не дошли до нее. Раньше у ZeroMemory в документации тоже не было указано ограничений. А сейчас есть - и не потому чтобы доставить Вам какие то неудобства - а потому что единый прицип действует - что FileReadStruct, что ZeroMemory, что сотня других подобных функций - все равны
что сотня других подобных функций - все равны
FileLoad/FileSave еще в копилку неравенства.
Занудство не победит удобство!
Нет причин стрелять себе в ногу.
FileLoad/FileSave еще в копилку неравенства.
Нет причин стрелять себе в ногу.
Это Вы себе в ногу стреляете - объявлением private. Сами себе ограничили доступ и потом будете удивляться почему код, где внешним функциям нужен public доступ вдруг перестал работать