[英]Adding derived class objects to vector with base interface class parameter
我有一个抽象类(纯虚拟类/接口),我们将其命名为A.
我有一个从A派生的类B,并实现了A的纯虚方法。
我有一个C类,其成员是指向A的指针的向量:
std::vector<A*> myVector
和方法:
add(A* item).
在从D派生的类D中,希望使用从类C派生的add方法添加类B的实例/对象。
我试着把它写成:
for(int i = 0; i < 10; i++)
{
C::add( (A*) new B());
}
我不确定这是否符合我的要求? 如果我省略(A *)我得到错误:
不允许转换为无法访问的基类“A”
我是否成功将B类对象指针添加到向量中?
错误
不允许转换为无法访问的基类“A”
意味着当B
派生自A
时你没有使用公共继承。 如果在指定类继承时省略public
关键字,则默认继承是private(请注意,对于struct
,缺省值是public inheritance)。
class B : /* private */ A
应该
class B : public A
回答你的上一个问题:
我是否成功将B类对象指针添加到向量中?
是。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.