C ++在父对象的向量上调用子函数

时间:2017-01-24 18:56:51

标签: c++ inheritance vector virtual parent

想象一下,我有一个班级A. B& C都继承自A. B'继承自B。

B"有一个成员变量,它是A指针的向量。 我创建了一个新的B"调用bP并在其中存储一个名为c的新C。 现在我想调用c.f(),这是一个仅存在于C类的函数。 我打电话给bP[0]->f()。 我得到的错误是" f():不是' A'"的成员。 我可以从父对象的向量中调用子函数吗?

1 个答案:

答案 0 :(得分:0)

I believe your code structure is something like this :

class A
{
};

class B: public A
{
};

class C: public A
{
};

class B': public B
{
    public:
           vector<A*> vec;
           B(class C* c)
           {
               vec.push_back(c);
           }
}; 

int main()
{
    C *c = new C();
    B'* b = B'(c);
    C* c = static_cast<C*>(((b->vec).front())->f());  //Downcasting
    return;
}