【发布时间】:2015-02-18 06:52:23
【问题描述】:
在 pimpl idiom 中,所有私有成员和函数都被移动到(私有)实现类。如果一个类有私有构造函数应该怎么办?是否应该将其移至实施?如果是,怎么做?
class X {
private:
X(); // moving it to XImpl???
public:
void DoSomething();
private:
class XImpl;
std::unique_ptr<XImpl> pimpl;
};
【问题讨论】:
-
一个私有构造函数被用来拒绝类的构造,而不是通过某种工厂方法。如果你把它移到实现中,你的接口类将得到一个默认的构造函数——这就是你想要的吗?
-
@DevSolar:感谢您的评论/问题。另一个类是
class X的朋友,应该创建一个X类型的对象。我想我必须拥有这个私人 ctor,但我想知道它的缺点是什么!
标签: c++ pimpl-idiom private-constructor