I have three classes: I have access to the only base class pointer, but this pointer is actually a derived class object. I want to use this base pointer to call the base class virtual function.
    class A
    {
        public:
        virtual void print() = 0;
    };
    class B: public A
    {
       public:
        virtual void print() override { cout <<"I am B\n"; }
    };
    class C: public B
    {
        public:
        virtual void print() override { cout <<"I am C\n"; }
    };
    int main()
    {
        cout<<"Hello World\n";
        A *a = new C();
        a->print(); // prints "I am C"
        //use pointer 'a' to print "I am B"
        return 0;
   }
