Object is the class from which all other classes should inherit. That allows you to treat them in the common way, for example, storing in std::vector.

If you want to define your class as direct children of Object and it will have either name or ID, consider using Nameable or Identifiable as direct base class instead.

Object gives all their children only one method std::wstring getDebugInfo() - for examining the object state at runtime.

Version changes (before 0.1.2)

Object used to has std::wstring toWString() and void serialize(...) methods too. They were removed because of rare usage and lack of implementations in sub-classes. You can use std::wstring getDebugInfo() in most cases where those two were involved earlier.