Release Notes 2022-05-05:

  • Introduced a protection mechanism against making classes abstract by mistake, e.g. by adding pure virtual methods to a base class and failing to implement them in the (meant as non-abstract) subclass. This is a mistake easily overlooked with MIRA's class factory providing 'instantiate by name' or 'instantiate by ancestry' options, meaning there may be no code explicitly instantiating a class, which would result in compiler errors inevitably. The class factory now demands to declare abstract classes by the use of MIRA_ABSTRACT_OBJECT (in place of MIRA_OBJECT). Failing to do so will show an error message at build time (manifest generation) naming the class. For now, the build still continues after this error (of course abstract classes can still not be instantiated), in a later release we intend to make the build fail entirely at this point to prevent missing/ignoring the error. Developers are expected to adapt their code (only required for abstract classes registered with the class factory, i.e. using MIRA_OBJECT).

Additional information