Возврат указателя портит объект (нарушение прав доступа)

Я возился с 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

Решение

Как это выглядит importer разрушается, когда функция заканчивается и, следовательно, объект scene больше не указывает на действительный указатель.
Я думаю, что динамическое распределение importer с

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

должен сделать свое дело.

Вы должны позже уничтожить этот объект с

delete importer;

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]