【发布时间】:2014-04-24 23:49:19
【问题描述】:
我有一个抽象类(纯虚拟类/接口),我们将其命名为 A。
我有一个从 A 派生并实现 A 的纯虚方法的 B 类。
我有一个 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*) 我会收到错误:
不允许转换为不可访问的基类“A”
我是否成功地将 B 类对象指针添加到向量中?
【问题讨论】:
-
当
B继承自A时,您确定使用公共继承吗? (即class B : public A) -
@unluddite:我不是,我知道这将如何导致该错误,因为基类是私有继承的。我想这不是我应该解决这个练习的方式=/
标签: c++ inheritance abstract-class abstract pure-virtual