Search code examples
c++inheritancecompiler-errorspure-virtual

C++ How to call a Child Method from Parent


I'm working on a small project, and I found myself in a situation like this :

class A{}

class B : class A {
    public:
        void f();
        int getType() const;
    private:
        int type;
}

class C : class A{
    public:
        int getType() const;
    private:
        int type;
}

I want to know if there's a way to call the f() function (in class B) from an object of type A?

I tried this but it says function f() cannot be found in class A :

int main(){
    vector<A*> v;
    // v initialized with values of A ...
    if (v->getType() == 1){             // 1 is the type of B
        v->f();
    }
}

Solution

  • As you've seen, this code won't compile because A doesn't have an f method. In order to make it work, you'd have to explicitly downcast the pointer:

    B* tmp = dynamic_cast<B*>(v);
    tmp->f();