C ++惰性实例化包装器

时间:2015-06-25 13:02:10

标签: c++

我有一个A类,它拥有一个B类型的对象.B应该被懒惰地实例化(这是一个要求),并且它被一些A方法使用。

目前通过在需要使用的每个A方法的开头调用allocate_b()来实现。如果尚未创建B,则allocate_b()将创建B的新实例。例如:

class B {
   ...
};


class A {
private:
    B* _b_object;
    B* allocate_b() {/*allocate _b_object if NULL*/}

public:
    void foo() 
    {
        allocate_b();
        _b_object->do_something();
    }
};

你可以看到这段代码很容易出错,并且如果有人在实现新方法时忘记添加allocate_b,那么可能会造成问题。

我想用一个覆盖operator-gt;的包装类替换指向B的指针。如有必要,首次执行分配。 我更喜欢使用现有的代码,而不是自己编写代码,我想知道是否有人知道已有的代码。

我也很高兴听到解决问题的其他想法

谢谢。

0 个答案:

没有答案