#include <vector>
#include <iostream>

using namespace std;

class CustomFoo {
public:
    virtual void do_staff()=0;
};

class Foo: public CustomFoo {
public:
    void do_staff() override { cout << "do_staff()\n"; };
};


class FooWrapper {
public:
    vector<CustomFoo*> foos;
    CustomFoo* operator->() {return foos[0];}
};


int main(){

    FooWrapper wrapper;
    wrapper.foos.push_back(new Foo());
    wrapper->do_staff();
}
