#include <iostream>

class Base {
public:
    virtual void foo() { std::cout << "Base\n"; }
};

class Derived : public Base {
    public:
    void foo() { std::cout << "Derived\n"; }
};

void function1(Derived *p) {
   p->Base::foo();  // <<<<< Here is the magic >>>>>
}

int main() {
    Derived d;
    function1(&d);
}