My entity class at its most basic:
class Entity : public ComponentContainer, public PropertyContainer, public Serializable, public NetworkObject
{
public:
};
Basically an entity contains a list of components and properties, can be serialized and is networked. I suppose I could use composition and have the ComponentContainer and PropertyContainer as members of an Entity instead, but I found it more practical to be able to do the following:
entity.AddComponent<MyComponent>();
The Serializable and NetworkObject objects allow the Entity to implement it's own logic for file de/serialization , etc and for network de/serialization. A Component object also inherits these objects.