我們有一個container
對象和一個item
對象。 Item
是container
的一部分。成員函數item
調用container
函數刪除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
是假的,checkFailed
從Container
被稱爲(targetItem
是從哪裏Check()
函數被調用的item
)會發生什麼。
你能用一些代碼來舉例說明你的情況嗎?這將使這更清楚。 – NathanOliver
https://isocpp.org/wiki/faq/freestore-mgmt#delete-this –