#ifndef DIRECTOR_H
#define DIRECTOR_H


#include <stdio.h>
#include <string>


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
