我可以从该对象的成员中释放一个对象吗?

时间:2019-06-27 14:06:50

标签: c++

在我制作的游戏中,我使用的场景架构包含某一时刻所有活动的Actor(视觉/逻辑游戏对象)。我有一个带有“关闭”按钮的对话框弹出窗口(这也是场景中的Actor)

是否可以从Button成员中清除(c ++删除)场景,如果该scene.clear()也会同步删除Button?

只要不使用clear()语句之后不再使用按钮的成员,我就可以确定,但是可能有些我不知道的东西吗?

namespace actors
{
    namespace ui
    {
        // ...

        void CloseDialogButton::update()
        {
            if (gb.buttons.pressed(Button::a))
            {
                // ...
                Game::ui_scene.clear(); // <-- this frees all game assets, including this CloseDialogButton instance
            }
        }
    }
}

// a copy paste FYI:
void Scene::clear()
{
    for (auto i = 0; i < get_actor_count(); i++)
    {
        delete actors[i]; // <- the button is among these
    }
    actor_tail_index_ = 0;
}

0 个答案:

没有答案