私は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;
}
にオブジェクトをロードするために使用しようとしている方法であり、この行は
sigh、私はちょうど私がunique_ptrをどのように使用していたのか遅れていると思った。私が従う正確なガイドはありませんが、私のポストを更新して、私の問題を説明しています。私に数分<3 – Honor
を教えてください。それはあなたのやり方ではありません。動的メモリ割り当てがない場合、 'unique_ptr'は意味をなさない。また、実際のユースケースを見つけたときに 'std :: make_unique'を調べてください。たぶんあなたはあなたが現在やっていることではなく、あなたが何をしたいのかを記述するべきです。 –
まあ、推測によるプログラミングはうまくいかない。そして、「遅らせる」のような嫌な言葉を使ってはいけませんか? –