0

如果我想将对象 B 的构造委托给 A 类并将构造限制为只能由 A 类完成,该怎么做?

我希望 A 类有一个返回 B 类型对象的方法,但我不希望客户端能够在不从对象 A 调用方法的情况下实例化 B 类型对象。

我想我不知道B类的构造函数要做什么来确保只有A类可以构造它。如果 B 类的构造函数是私有的,我将无法构造它,对吗?如果构造函数受到保护,构造函数将只能被派生实例访问,对吗?

4

1 回答 1

0

MakeB的构造函数private,并成为A的朋友B

class B;

class A
{
public:
  std::unique_ptr <A> make_B();
};

class B : public A
{
private:
  friend std::unique_ptr <A> A::make_B();

  B() {};
};
于 2013-10-31T16:57:27.803 回答