にクラッシュ: "Chicago"--> ChicagoObj
と"NewYork"-->NewYorkObj
、ChicagoObj
とNewYorkObj
がMyClass
のオブジェクトへのポインタです。のstd ::マップは、Windows 32ビット上で動作しますが、私はそれで2つのエントリを持つ文字列マップ持って64
次のコードは32ビットでコンパイルして正常に動作しますが、64ビットでコンパイルされますが、シカゴのエントリを出力した後は常に64ビットでクラッシュします。どんな助けもありがとう!
typedef std::map<std::string, MyClass*> MyStringMap;
MyStringMap my_map;
std::string key1="Chicago";
MyClass *ChicagoObj = new MyClass;
my_map[key1] = ChicagoObj;
std::string key2="NewYork";
MyClass *NewYorkObj = new MyClass;
my_map[key2] = NewYorkObj ;
MyStringMap::iterator iObjMap = my_map.begin();
while (iObjMap != my_map.end())
{
std::string key = iObjMap->first;
std::cout<<"name of the key in the map: " << key <<std::endl;
iObjMap++;
}
"string"と "std :: string"を混在して使用していますが、私は誤植を想定しています。そうでなければ、 "string"は本当に "std :: string" – SirDarius
'std :: string'のようなオブジェクト型を持つ' C'スタイルのキャストは使用しないでください。この場合でも無害に見えます。 – Chad
このコードは実際にコンパイルされますか?それは、いくつかのものが欠けているようです。例えば、 "my_map"は何ですか? – josephthomas