Я возился с 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
}
Я думаю, что я упустил что-то важное здесь о указателях и константах и тому подобное. Есть идеи?
Как это выглядит importer
разрушается, когда функция заканчивается и, следовательно, объект scene
больше не указывает на действительный указатель.
Я думаю, что динамическое распределение importer
с
Assimp::Importer *importer = new Assimp::Importer;
должен сделать свое дело.
Вы должны позже уничтожить этот объект с
delete importer;
Других решений пока нет …