我正在摆弄assimp和C ++,我写了一个简单的函数来从文件中加载一个场景。但是,当我尝试返回指针时,如果我尝试检索成员数据,则对象变得混乱并且我会获得访问冲突。这段代码应该证明这种情况:
const aiScene* ResManager::loadScene(const std::string& pFile)
{
Assimp::Importer importer;
const aiScene* scene = importer.ReadFile(pFile, aiProcessPreset_TargetRealtime_MaxQuality);
if(!scene)
{
printf("%s\n", importer.GetErrorString());
return 0;
}
// If I break the debug here, 'scene' is valid
return scene;
}
void ResManager::loadFromFile(const std::string& pFile)
{
const aiScene* scn = loadScene(pFile);
// If I break the debug here, 'scn' contains gibberish
}
我认为我错过了一些关于指针和内容的重要信息。有什么想法吗?
答案 0 :(得分:1)
因为看起来importer
在函数结束时会破坏,因此对象scene
不再指向有效指针。
我认为用{/ 1>动态分配importer
Assimp::Importer *importer = new Assimp::Importer;
应该这样做。
稍后您应该使用
销毁此对象 delete importer;