Version 2 (modified by landauf, 17 years ago) (diff) |
---|
BaseObject
The BaseObject is the top-most SuperClass of (most but not) all Classes in orxonox.
source:/trunk/src/lib/lang/base_object.h#HEAD
Derived From:
- nothing
Description
BaseObject is a container for
- The Name of the Object (how the object is called)
- The Class' Name of the Object (in what class this object is)
- The ClassID of the Object (what is the Identity of the class (see ClassID
Usage
- Registration:
Each class, that extends BaseObject must implement the following function:- In the Class-Declaration use the following syntax (taken your class is named OrxClass)
class OrxClass : public !BaseObject // here you could also specify any class derived from !BaseObject { ObjectListDeclaration(OrxClass); /// ... rest of the Declaration; };
- At the top of the cc-file of the Class (in the definiton) write:
ObjectListDefinition(OrxClass);
- In the constructor of each class implementing BaseObject write the following:
this->registerObject(this, OrxClass::_objectList);
- you can then set a Name to the Object using
this->setName("the name");
- In the Class-Declaration use the following syntax (taken your class is named OrxClass)
- isA:
isA is a function, that queries, if the Object is of a Specified type. e.g. given a class Player that is derived from BaseObject and PNode? one can do the following check :Player* player = new Player(); if (player->isA(PNode::staticClassID()) { /* do something terrible with it */ }
Advanced Topics
An interessting Function, that BaseObject provides is the ObjectList?. With it, one can retrieve lists of any one kind of derived classes from BaseObject.