我有一个抽象类(纯虚类/接口(interface)),我们将其命名为 A。
我有一个类 B,它派生自 A 并实现了 A 的纯虚方法。
我有一个类 C,其成员是指向 A 的指针 vector :
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*),我会收到错误消息:
Conversion to inaccessible base class "A" is not allowed
我是否成功将 B 类对象指针添加到 vector 中?
最佳答案
错误
Conversion to inaccessible base class "A" is not allowed
表示当 B
派生自 A
时,您没有使用公共(public)继承。如果在指定类继承时省略 public
关键字,则默认继承为私有(private)(请注意,对于 struct
,默认为公共(public)继承)。
class B : /* private */ A
应该是
class B : public A
回答你的最后一个问题:
Did I successfully add B class object pointers to the vector?
是的。
关于c++ - 使用基接口(interface)类参数将派生类对象添加到 vector 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22493912/