// An 'implementation' of the 'interface-like' abstract class in C++ #include enum GameObjectMedium {Paper, Plastic, Electronic}; class IGameObject{ public: virtual int getGameValue() = 0; virtual GameObjectMedium getMedium() = 0; }; class GameObject: public IGameObject{ public: int getGameValue() override{ return 1; } GameObjectMedium getMedium() override{ return Electronic; } }; int main(){ IGameObject *ig = new GameObject(); // Polymorphic std::cout << ig->getGameValue() << std::endl; // 1 std::cout << ig->getMedium() << std::endl; // 2 }