Преобразование типов->???
MyStruct *Str1=(MyStruct *) Handle
где:
MyStruct - Моя структура из каких-то полей
Str1 - Указатель на нее
Handle - Указатель на открытый файл
Интересует механизм заполнения Моей Структуры из Файла. Просто если в разных местах писать эту строку то получается разный результат... почему???
Если Вы хотите заполнить структуру данными из файла, то сначала нужно выделить память под структурню переменную, затем для каждого члена структуры прочитать из файла соответствующее значение и занести в этот член.
Просто так взять и преобразовать указатель на один посторонний объект (Ваш открытый файл) в указатель на другой совершенно посторонний объект (Ваша структура) в общем случае не получится.
Вообщем первое поле Моей Структуры это указатель на открытый файл и когда я смотрю в Watch'е (приостанавливая выполнение программы) на содержимое этого указателя, то оно получается всегда разное (если в разных местах прописывать это преобразование типов) ... почему? (файл я не меняю)
Цитата:
Originally posted by UserPro
Мне на самом деле трудно сформулировать свой вопрос, т.к. пользуюсь не своими библиотеками в которых заполняются структуры.
Вообщем первое поле Моей Структуры это указатель на открытый файл и когда я смотрю в Watch'е (приостанавливая выполнение программы) на содержимое этого указателя, то оно получается всегда разное (если в разных местах прописывать это преобразование типов) ... почему? (файл я не меняю)
Мне на самом деле трудно сформулировать свой вопрос, т.к. пользуюсь не своими библиотеками в которых заполняются структуры.
Вообщем первое поле Моей Структуры это указатель на открытый файл и когда я смотрю в Watch'е (приостанавливая выполнение программы) на содержимое этого указателя, то оно получается всегда разное (если в разных местах прописывать это преобразование типов) ... почему? (файл я не меняю)
Вообще-то в C++ грамотнее пользоваться приведением в стиле C++, т.е. через xxxx_cast<>, в твоем случае это видимо reinterpret_cast<>.
Возможно, проблема в этом.