我无法在继承类中保存和加载数据。
在加载代码时,功能调试器说无法读取内存并且无法访问成员函数
对象是超类,CPlayer是子类
CMainGame::CMainGame()
:player(nullptr),field(nullptr), save_load(nullptr)
{
field = new CField();
save_load = new CSave_Load;
}
void CMainGame::select_class()
{
case 4:
//player = new CPlayer;
player = new CPlayer("", 0.f, 0.f, 0, 0, 0);
save_load->Load(player);
return;
}
save_load标头和cpp
class CSave_Load
{
public:
CSave_Load();
~CSave_Load();
void Save(class CObject* _player);
void Load(class CObject* _player);
};
//Load Function
void CSave_Load::Load(CObject* _player)
{
FILE* fp = nullptr;
errno_t err = fopen_s(&fp, "./Data/Save.txt", "rb");
if (err == 0)
{
fread(_player, sizeof(CObject), 1, fp);
cout << "불러오기 성공" << endl;
fclose(fp);
}
else
cout << "불러오기 실패" << endl;
system("pause");
}
答案 0 :(得分:0)
您正在使用VisualStudio吗?
由于Visual Studio是从源代码构建的,因此运行EXE的目录可能不是源代码目录。
完整路径会发生什么?该代码似乎“确定”,但是如果不查看完整图片,很难猜测。
答案 1 :(得分:0)
最后,我通过在保存,加载功能中发送参数的结构来解决此问题 编译器不知道CObject或CPlayer的大小,因为它们太重了
INFO* CSave_Load::Load(INFO* _info)
{
FILE* fp = nullptr;
errno_t err = fopen_s(&fp, "./Data/Save.txt", "rb");
if (err == 0)
{
fread(_info, sizeof(INFO), 1, fp);
cout << "불러오기 성공" << endl;
fclose(fp);
}
else
cout << "불러오기 실패" << endl;
system("pause");
return _info;
}
INFO是CObject类中的结构