我有一个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的指针。如有必要,首次执行分配。 我更喜欢使用现有的代码,而不是自己编写代码,我想知道是否有人知道已有的代码。
我也很高兴听到解决问题的其他想法
谢谢。