【发布时间】:2014-07-31 03:09:03
【问题描述】:
我想创建一个父类Base,它的子类Derived1、Derived2 等都有工厂。Base 的构造函数及其所有派生类都应该是私有的。我尝试这样做:
base.h:
class Derived1;
class Base
{
protected:
Base ();
public:
Base *createDerived1 ();
}
#include "derived1.h"
派生1.h:
#include "base.h"
class Derived1 : public Base
{
friend class Base;
private:
Derived1 ();
}
派生1.cpp:
Derived1::Derived1 ()
: Base ()
{
}
base.cpp:
Base *Base::createDerived1 ()
{
return new Derived1 (); // error C2248: 'Derived1::Derived1' : cannot access private member declared in class 'Derived1'
}
但是,尽管声明了Base 的朋友类Derived1,但我无法访问工厂内的私有构造函数。我是不是做错了什么,或者不可能让父类成为朋友,我应该公开 Derived 类的构造函数?
【问题讨论】:
标签: c++ inheritance friend