container
オブジェクトとitem
オブジェクトがあります。 Item
はcontainer
の一部です。 item
メンバ関数は、item
を削除するcontainer
関数を呼び出します。メンバー関数からのオブジェクトの削除
item
オブジェクトを削除した機能がitem
メンバー関数に戻るとどうなりますか?それは未定義の動作につながるように聞こえる。これはdelete this;
のより精巧なケースですか?
編集:
class Item
{
Container* itemContainer;
std::string itemName;
void check(void)
{
bool condition = false;
// check some condition (not relevant to the question)
if (!condition)
{
itemContainer->CheckFailed(itemName);
}
}
}
class Container
{
std::vector<Item*> itemList;
void checkFailed(std::string)
{
Item* targetItem;
//find item by name
delete targetItem;
}
}
だから私の質問だった:condition
がfalseで、Container
からcheckFailed
は(targetItem
がCheck()
関数が呼び出されるところからitem
である)と呼ばれている場合は何が起こりますか。
状況によっては、コードを使用できますか?これにより、これははるかに明確になります。 – NathanOliver
https://isocpp.org/wiki/faq/freestore-mgmt#delete-this –