Итак, я использую библиотеки SFML и Boost, пытаясь написать класс ResourceManager. Я использую std :: map, чтобы содержать ресурсы. Недавно я слышал, что std :: unique_ptr действительно хорош, потому что он очищает память (или что-то в этом роде).std :: unique_ptr Ошибка создания ошибки в std :: map?
Это то, что мой класс ResourceManager выглядит следующим образом:
#pragma once
#include <boost/Any.hpp>
#include <map>
#include <memory>
#include <SFML/Graphics.hpp>
#include "Resource.h"
class ResourceManager
{
public:
ResourceManager();
void clear();
void dump();
boost::any getResource(std::string s);
sf::Texture loadTexture(std::string s, sf::IntRect d);
void unloadTexture(std::string s);
private:
std::map<std::string, std::unique_ptr<boost::any>> resource;
};
Вот метод, который я пытаюсь использовать для загрузки объектов в моей карте
sf::Texture ResourceManager::loadTexture(std::string s, sf::IntRect d)
{
std::unique_ptr<sf::Texture> t;
if (!t->loadFromFile(s, d))
std::cout << "Error loading resource: " << s << std::endl;
resource[s] = t;
}
Однако я получаю эту ошибку здесь, в эта строка:
вздох, я думал, что я просто отставал от того, как я использовал unique_ptr. Нет точного руководства, за которым я следую, но я обновлю свое сообщение лучше, расскажу о своей проблеме. дайте мне несколько минут <3 – Honor
Нет. Это не то, как вы это делаете. Если динамического распределения памяти нет, то 'unique_ptr' не имеет смысла. Кроме того, загляните в 'std :: make_unique', когда вы * сделаете * найти реальный прецедент. Возможно, вам следует описать *, что * вы хотите сделать, а не * то, что вы сейчас делаете. –
Ну, программирование, гадание не работает. И давайте не будем использовать отвратительные, постыдные термины вроде «отсталых», а? –