Не удалось загрузить изображение в вектор текстуры (SFML) - PullRequest
0 голосов
/ 20 января 2020

Мы пытаемся загрузить текстуры в вектор текстур, чтобы иметь возможность строить игру. Программа выбрасывается однажды попав в строку, где мы пытаемся загрузить изображение в вектор. Определение вектора:

vector> 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");
}

1 Ответ

0 голосов
/ 20 января 2020

Вам необходимо выделить память для хранения 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
}

Кроме того, вы потеряете m_textureVec, когда ваша функция Resources() завершится. Лучше всего создавать эту переменную в более продолжительной среде.

...