0

我正在摆弄 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
}

我想我在这里错过了一些关于指针和常量等的重要内容。有任何想法吗?

4

1 回答 1

1

因为它似乎importer在函数结束时破坏,因此对象scene不再指向有效指针。我认为动态importer分配

   Assimp::Importer *importer = new Assimp::Importer; 

应该做的伎俩。

你应该稍后销毁这个对象

delete importer;

于 2013-11-23T14:23:18.460 回答