无法将图像加载到纹理矢量 (SFML)



我们正在尝试将纹理加载到纹理向量中,以便能够构建游戏。 一旦到达我们尝试将图像加载到向量的行,程序就会被抛出。 向量的定义是:

载体> m_textureVec;

#include "Resources.h"
#include <thread>
#include <SFML/Graphics.hpp>
using std::vector;
Resources Resources::m_instance = Resources();
Resources::Resources()
{
vector<unique_ptr<sf::Texture>> m_textureVec;
m_textureVec.resize(8);
m_textureVec[0]->loadFromFile("digger.png");
m_textureVec[1]->loadFromFile("monster.png");
m_textureVec[2]->loadFromFile("diamond.png");
m_textureVec[3]->loadFromFile("present.png");
m_textureVec[4]->loadFromFile("stone.png");
m_textureVec[5]->loadFromFile("wall.png");
m_textureVec[6]->loadFromFile("background.png");
m_textureVec[7]->loadFromFile("empty.png");
}

您需要为要保存的unique_ptr分配内存。现在你有 8 个unique_ptr,没有什么可指向的。

Resources::Resources()
{
vector<unique_ptr<sf::Texture>> m_textureVec;
m_textureVec.resize(8);
m_textureVec.push_back(std::unique_ptr<sf::Texture>(new sf::Texture()));
m_textureVec[0]->loadFromFile("digger.png");
//etc
}

此外,当您的Resources()功能完成时,您将失去m_textureVec。最好在更持久的环境中创建该变量。

最新更新