允许调用者在我的Builder类中使用任何指针类型(包括智能指针?)>

问题描述 投票:0回答:1

Foo实现构建器的标准方法如下:

class Foo::Builder {
public:
  Builder& setBar(bool bar);
  ...
  Foo build() const;
};

仅在调用方尝试通过智能指针使用此类时:

auto builder = std::make_shared<Foo::Builder>()->setProperty(...);

不能以这种方式使用构建器,因为setProperty()将返回对该对象的引用,该对象在此语句完成执行时将被销毁。当调用方在同一条语句中调用build()并且Builder类从未绑定到变量名时,这没有关系。

但是,在我的应用程序中,我希望能够对派生的生成器对象进行一些配置,然后将其传递给另一个类的构造函数(该类将其作为指向基本类型的指针接收)。我还希望调用者能够确定所使用的指针的类型。我可以通过将Foo::Builder用作模板来做到这一点吗?有没有更适合的设计模式呢?我愿意接受想法。

为Foo实现Builder的标准方法如下:class Foo :: Builder {public:Builder&setBar(bool bar); ... Foo build()const; };仅当呼叫者尝试使用此方法时...

c++ smart-pointers builder
1个回答
0
投票

拥有对他人用来指向实例的内容的控制权并不是阶级上的事。如果该其他类在其构造函数中接收到指向Builder的指针,则可以使构造函数成为模板:

© www.soinside.com 2019 - 2024. All rights reserved.