Я получаю ошибку сегментации, когда пытаюсь вставить ее в свою карту.C++ - std :: map.insert() segmentation fault
функция выглядит примерно так:
void add(std::string id, std::string name)
{
Asset asset(nullptr, false, name);
mAssets.insert(std::make_pair<std::string, Asset>(id,asset)); <-- This line gives segfault
}
mAssets просто объявленную
std::map<assetID, Asset> mAssets;
А класс активов (коряво) объявлен как это:
class Asset
{
public:
Asset(T* a, bool l, std::string f) : asset(a), loaded(l), filename(f)
{
}
Asset(const Asset& copy)
{
loaded = copy.loaded;
filename = copy.filename;
asset = new T();
*asset = *copy.asset;
}
~Asset()
{
delete asset;
}
Asset& operator=(const Asset& other)
{
Asset temp(other);
loaded = temp.loaded;
filename = temp.filename;
std::swap(asset,temp.asset);
return *this;
}
T* asset;
bool loaded;
std::string filename;
};
Что вы AssetID ключ класса? –
propertyID is typedeffed std :: string – Henningsson
Как правило, чтобы сделать код более удобочитаемым (для меня, по крайней мере), я предпочитаю: 'mAssets [id] = asset;' – crashmstr