#pragma once
#include <memory>

class GameObject;
// Base class for all GameObject Components.
class Component {
public:
	virtual ~Component(){}
	GameObject& GetOwner() const { return gameObject; }
	Component(Component&&) = delete;
	Component(Component const&) = delete;
	Component& operator=(Component) = delete;
protected:
	Component(GameObject* gameObject) : gameObject(*gameObject) { }
	GameObject& gameObject;
};