如何仅通过父类对象限制对象创建?

Soo*_*raj 2 c++ inheritance c++11

请考虑以下示例.

class Parent
{
public:
    Child createChild();

// some member data and functions can go here.
}

class Child: public Parent
{
// some member data and functions can go here.
}
Run Code Online (Sandbox Code Playgroud)

我想只允许通过Parent类中提供的方法创建"Child"类.这就是我想拒绝用户实例化Child类对象的选项.我还想避免使用Child类的所有其他默认构造.这怎么可能?

Parent p;
Child c = p.createChild(); // should be possible
Child d; //should not be allowed
Child e = c; // may  be allowed
Run Code Online (Sandbox Code Playgroud)

Som*_*ude 5

您可以在Child构造函数private,并且有Parent::createChildfriendChild.


请注意StoryTeller的评论,因为你的拷贝构造函数仍然需要公开.