Go to the documentation of this file.
24 void printName() { std::cout <<
"printName: Foo" << std::endl; }
33 virtual void printName() { std::cout <<
"printName: BarBase" << std::endl; }
36 class Bar :
public BarBase
44 std::cout <<
"class: Bar" << std::endl;
48 std::cout <<
"specificBarMethod: reached." << std::endl;
64 std::cout <<
"RTTI Foo (static): " << id_foo->className << std::endl;
67 Bar::Ptr pBar = std::make_shared<Bar>();
74 std::cout <<
"Is Foo? => " << (
IS_DERIVED(pObj,
Foo) ?
"Yes" :
"No")
78 std::cout <<
"Is Bar? => " << (
IS_DERIVED(pObj,
Bar) ?
"Yes" :
"No")
83 pBar->specificBarMethod();
110 for (
const auto& cl : allClasses)
112 std::cout <<
"Known class: " << cl->className <<
", children of "
113 << (cl->getBaseClass ? cl->getBaseClass()->className
126 pBar->specificBarMethod();
133 int main(
int argc,
char** argv)
141 catch (std::exception& e)
143 std::cout <<
"Exception: " << e.what() << std::endl;
void registerClass(const mrpt::rtti::TRuntimeClassId *pNewClass)
Register a class into the MRPT internal list of "CObject" descendents.
std::shared_ptr< CObject > Ptr
#define DEFINE_VIRTUAL_MRPT_OBJECT(class_name)
This declaration must be inserted in virtual CObject classes definition:
#define IS_DERIVED(ptrObj, class_name)
Evaluates to true if a pointer to an object (derived from mrpt::rtti::CObject) is an instance of the ...
void Test_UserTypesFactory()
virtual void printName() override
std::vector< const mrpt::rtti::TRuntimeClassId * > getAllRegisteredClasses()
Returns a list with all the classes registered in the system through mrpt::rtti::registerClass.
IMPLEMENTS_VIRTUAL_MRPT_OBJECT(CMultiObjectiveMotionOptimizerBase, CObject, mrpt::nav) CMultiObjectiveMotionOptimizerBase
static CAST_TO::Ptr from(const CAST_FROM_PTR &ptr)
The virtual base class of all MRPT classes with a unified RTTI system.
#define IS_CLASS(ptrObj, class_name)
Evaluates to true if the given pointer to an object (derived from mrpt::rtti::CObject) is of the give...
#define CLASS_ID_NAMESPACE(class_name, namespaceName)
std::shared_ptr< BarBase > Ptr
void registerClassCustomName(const char *customName, const TRuntimeClassId *pNewClass)
Mostly for internal use within mrpt sources, to handle exceptional cases with multiple serialization ...
IMPLEMENTS_MRPT_OBJECT(CMultiObjMotionOpt_Scalarization, CMultiObjectiveMotionOptimizerBase, mrpt::nav) CMultiObjMotionOpt_Scalarization
#define CLASS_ID(T)
Access to runtime class ID for a defined class name.
void Test_UserTypes()
[example-define-class]
std::shared_ptr< Bar > Ptr
mrpt::rtti::CObject::Ptr classFactoryPtr(const std::string &className)
Like classFactory() but returns a smart pointer.
#define DEFINE_MRPT_OBJECT(class_name)
This declaration must be inserted in all CObject classes definition, within the class declaration.
Page generated by Doxygen 1.8.17 for MRPT 1.9.9 Git: ad3a9d8ae Tue May 1 23:10:22 2018 -0700 at miƩ 12 jul 2023 10:03:34 CEST | |