#ifndef DIRECTOR_H #define DIRECTOR_H #include #include class FooBarAbstract { public: FooBarAbstract() {}; virtual ~FooBarAbstract() {}; std::string FooBar() { return this->Foo() + ", " + this->Bar(); }; protected: virtual std::string Foo() { return "Foo"; }; virtual std::string Bar() = 0; }; class FooBarCpp : public FooBarAbstract { protected: virtual std::string Foo() { return "C++ " + FooBarAbstract::Foo(); } virtual std::string Bar() { return "C++ Bar"; } }; #endif