次のようなコードがあります
template <typename KeyType, typename ValueType>
KeyType IDSystem<KeyType,ValueType>::registerParameter(const ValueType& value)
{
KeyType key = __IDCounter++;
_Map[key] = value; //crashes here
return key;
}
_Map はどこにありますか
std::map<KeyType, ValueType> _Map;
指示された場所でプログラムがクラッシュしていたので、その行を次のように置き換えました
_Map.at(key) = value; //out_of_range thrown here
そして今、プログラムは同じ行で std::out_of_range 例外をスローします...
KeyType は標準ライブラリの int64_t で、ValueType はクラス (MyClass* など) へのポインタです。
驚くべき部分は、以前と同じように std::map を使用したことです...そして問題は発生しませんでした。
std::map を間違って使用していますか? お知らせ下さい。