返回此const指针时出现问题。使用调试器向我展示了场景已正确导入并存储在可变场景中。返回场景后,场景所指向的内容将丢失,并且无法通过调用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/