= !ClassIdentifier = [[TracNav(TracNav/TOC_Development)]] ---- {{{ #!html }}} '''Important: The [wiki:ClassIdentifier] is derived from [wiki:Identifier]. Read the related Wiki-page to learn about all inherited features and functions.''' * '''Go to the [wiki:Identifier]''' {{{ #!html }}} ---- == Description == The ClassIdentifier is a [wiki:template], inherited from [wiki:Identifier], containing all class-specific functions for the class represented by the [wiki:Identifier]. In fact this is only the [wiki:ObjectList]. The constructor of ClassIdentifier is private. Only [wiki:IdentifierDistributor] is allowed to create and distribute new instances. (In fact only '''one''' instance per [wiki:template]-class. This is '''very''' important.) You can't access the ClassIdentifier of a class directly. Use [wiki:ClassManager]::getIdentifier() instead. A shorter version of this command is the macro Class(classname) (include [wiki:CoreIncludes CoreIncludes.h] to use it) that returns the ClassIdentifier of the given class. == The !ObjectList == Every class that uses the !RegisterObject(classname) or !RegisterRootObject(interfacename) macro (see [wiki:CoreIncludes]) is represented by an [wiki:Identifier], that stores all objects of this class (and of all inherited classes) in a [wiki:ObjectList]. The object gets removed from the list if it gets deleted. This is handled by the destructor of [wiki:OrxonoxClass] and the [wiki:MetaObjectList]. You can iterate through all objects in a [wiki:ObjectList] by using an [wiki:Iterator]. Read the related Wiki-page to get more informations. == Example == {{{ #!cpp MyClass.h: class MyClass : public BaseObject { MyClass(); }; }}} {{{ #!cpp MyClass.cc: #include "CoreIncludes.h" #include "MyClass.h" MyClass::MyClass() { RegisterObject(MyClass); } }}} {{{ #!cpp SomeOtherFile.cc: #include "CoreIncludes.h" #include "MyClass.h" Identifier* myidentifier = Class(MyClass); std::cout << myidentifier->getName() << std::endl; /* returns: MyClass */ }}}