考虑下面的类
class Forwarder : public Base
{
private:
Base* dest;
Forwarder* next;
public:
explicit Forwarder(Base* dest, Forwarder* next)
: dest(dest), next(next) {}
~Forwarder() {
if (next) delete next;
delete dest;
}
void DoStuff() {
if (next) next->DoStuff();
dest->Process();
}
};
它的目的是为事件创建一个转发链,因此如果DoStuff
在基层被调用,它将在整个链中传播,并通知其他人。我想用它来将输出发送到各种流。无论如何,创建链的典型方法是:
Forwarder f(new First, new Forwarder(new SomeOther, new Forwarder(new YouGetTheIdea, NULL)));
这是一种非常方便的构建链的方法,但它很危险并且容易受到内存泄漏的影响,因为编译器可以随机播放。有没有更安全的方法来构建我想要的链(最好保留精益语法)?