1

如果我没记错的话,有一个类的 boost 实现,您可以在其中指定一个函数,当对象被销毁时它将调用它。

// it's actually a template if iirc
class Blue
{
public:
    Blue(std::function<void()> f) : func(f) { }
    ~Blue() { func(); }
private:
    std::function<void()> func;
};

// Implementation:

class Foo
{
public:

    Blue Bar()
    {
        /* ... */
        return Blue(std::bind(&Mag, this));
    } 

private:

    void Mag() { /* ... */ }

};

int main()
{
    Foo foo;

    // ...

    {
        foo.Bar();

        // ...

        // Guaranteed Mag() will be called
    }

    // ...

}

我忘记了 boost 的实现被称为什么,想知道是否有人可以帮助我识别它?

4

0 回答 0