我在返回这个 const 指针时遇到了问题。使用调试器显示场景已正确导入并存储在变量场景中。返回scene后,scene指向的内容丢失,无法被调用loadData()的类访问。
const aiScene* IOHandler::loadData(const std::string& pFile){
Assimp::Importer importer;
const aiScene* scene = importer.ReadFile(pFile,
aiProcess_CalcTangentSpace |
aiProcess_Triangulate |
aiProcess_JoinIdenticalVertices |
aiProcess_SortByPType);
return scene;
}
(Importer
和 aiScene(struct)
是 assimp 库的一部分,不能修改)
我假设场景存储在堆栈中,返回调用重置堆栈指针并且内容丢失。在c++中如何处理这样的问题?
最佳答案
您忘记阅读 documentation .
场景由 Importer
拥有,因此当超出范围时它将被销毁。返回 importer.GetOrphanedScene()
取得所有权,并记得在完成后将其删除。
或者,您可以将导入器存储在更永久的地方;但如果您需要同时导入和使用多个场景,这可能不太适用。
关于c++ - 函数返回后指向无效内容的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16798808/