我有一个抽象类(纯虚拟类/接口),我们将其命名为A.
我有一个从A派生的B类,它实现了A的纯虚方法。
我有一个C类,其成员是指向A:
的指针的向量std::vector<A*> myVector
和方法:
add(A* item).
在从C派生的类D中,我想使用从类C派生的add方法添加类B的实例/对象。
我尝试把它写成:
for(int i = 0; i < 10; i++)
{
C::add( (A*) new B());
}
我不确定这是否符合我的要求?如果我省略(A *),我会得到错误:
转换为无法访问的基类&#34; A&#34;不允许
我是否成功将B类对象指针添加到向量?
答案 0 :(得分:2)
错误
转换为无法访问的基类&#34; A&#34;不允许
表示当B
派生自A
时,您未使用公共继承。如果在指定类继承时省略public
关键字,则默认继承是私有的(请注意,对于struct
,默认为公共继承)。
class B : /* private */ A
应该是
class B : public A
回答你的上一个问题:
我是否成功将B类对象指针添加到向量?
是