向具有基接口类参数的向量添加派生类对象
Adding derived class objects to vector with base interface class parameter
我有一个抽象类(纯虚拟类/接口),我们将其命名为a。
我有一个类B,它派生自a,并实现了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*),我得到错误:
不允许转换为不可访问的基类"A"
我是否成功地将B类对象指针添加到向量?
错误
不允许转换为不可访问的基类"A"
意味着当B
从A
派生时,您没有使用公共继承。如果在指定类继承时省略public
关键字,则默认继承为私有继承(注意,对于struct
,默认继承为公共继承)。
class B : /* private */ A
应该class B : public A
回答你最后一个问题:
我是否成功地将B类对象指针添加到向量?
是的。
相关文章:
- 有没有办法向这个向量添加元素?
- 这种方式是否可以接受向向量添加unique_ptr?
- 向向量添加元素
- 无法向向量添加回调
- 如何将向量添加到结构中以创建一个库存系统,在该系统中,我可以仅使用一个结构向系统添加多种不同的葡萄酒
- 在一个类中向向量添加元素不适用于其他类
- 以下向 c++ 向量添加元素的方法有什么区别
- 我可以在不推送向量的情况下向向量添加值吗?
- 向向量C++添加对
- 使用单词键将多个行号的向量添加到我的地图中
- 在C++中向指针数组中的向量添加元素
- 要创建一个一开始没有特定维度的类Vector,请在类中创建一个方法,允许向向量添加维度
- 一次向 C++ 向量添加多个元素
- STL - 向存储在 STL 映射中的向量添加值
- 向向量添加向量
- 如何向结构类型的向量添加点
- 为什么我的课'当我向向量添加实例时,会调用s析构函数
- 向c++向量添加新字段
- 在c++中向向量添加对象vs向向量添加指针
- 当Type为unique_ptr时,为向量添加运算符[]