【发布时间】:2014-05-31 17:55:08
【问题描述】:
我正在制作一个套接字工厂。我希望每个外部应用程序都使用作为少数类(ServerSocketTCP、ClientSocketTCP、ServerSocketUDP 等)的父类的 Socket 类的接口,因为最终将使用套接字独立于类型进行读写,从而简化了使用他们。因此套接字将仅由套接字静态成员(工厂)构造。这就是为什么要保护子构造函数以避免用户创建它们。
这是我得到错误的地方:
class A{
protected:
A();
public:
static A* createClass(int _type){
switch(_type){
case 0:
return new B();
case 1:
return new C();
default:
return nullptr;
}
}
}
class B: public A{
protected:
B();
}
class C: public A{
protected:
C();
}
然后编译器说B和C的构造函数不能从A访问。有什么办法可以做我想做的事吗?我认为可以访问受保护的子成员,但现在我看到这不是因为访问继承......
【问题讨论】:
标签: c++ inheritance factory