У меня есть объект, у которого есть этот указатель 'SDL_Texture * texture' и, конечно, некоторые другие нерелевантные атрибуты и методы. Я хотел сохранить весь объект в файл, а затем перезагрузить его в следующем сеансе. Я попытался загрузить его и переназначить текстуру (которая указала бы на неправильный адрес памяти) перед ее использованием, но, конечно, я получаю совершенно неправильные значения. Вот код:
class Entity
{
private:
SDL_Texture *texture = NULL;
// ...
public:
Entity::Entity(){}
void Entity::loadSprites()
{
this->texture = IMG_Load("./sprites/puppet/idle.png");
// ...
}
}
Entity load(const char filepath[])
{
Entity ent;
ifstream file(filepath);
file.read(reinterpret_cast<char*>(&ent), sizeof(Entity));
file.close();
ent.loadTexture();
return ent;
}
Я знаю, что идея загрузки неправильного указателя, вероятно, одна из худших вещей, которые я могу сделать, но мне было интересно, как это может изменить значения каждого атрибута моего объекта, и как я могу избежать этого. Я также должен признать, что я не совсем понимаю, как работает reinterpret_cast (& ent).