Tag クラスのデストラクタが呼び出されている理由を理解しようとしています。
map<string, Tag>* TestLoader::loadCompoundTag()
{
map<string, Tag>* compound = new map<string, Tag>();
//Create locally scoped variable
Tag tag;
string tagName;
do
{
loadTag(tag, tagName);
//Copies variable into map
compound->insert(std::pair<string, Tag>(tagName, tag));
//Tag destructor is called before debugger breaks on this line
} while (tag.type != TAG_End);
return compound;
}
void TestLoader::loadTag( Tag& tag, string& name )
{
tag.i = 0;
name = string("Test");
}
デストラクタがそこで呼び出されている理由について、誰かにアイデアを教えてもらえますか? ループのスコープ内で定義されている変数はありません。1 つはループの外で作成され、もう 1 つは関数内で作成されます。ありがとう!