#include "new_class_id.h" #include "new_object_list.h" #include #include class NewBaseObject { public: // void setName(const std::string& name) { this->_objectName = name; }; const std::string& getName() const { return _objectName; }; // bool operator==(const std::string& name) const { return _objectName == name; }; NewObjectListDeclaration(NewBaseObject); protected: NewBaseObject(const std::string& objectName = "") : _objectName(objectName) { this->registerObject(this, objectList); }; template inline void registerObject(T* object, NewObjectList& objectList) { _id.registerObject(object, objectList); }; protected: NewClassID _id; std::string _objectName; }; NewObjectListDefinition(NewBaseObject); class Test : public NewBaseObject // , // public BaseObject { public: Test(); ~Test(); NewObjectListDeclaration(Test); //ObjectListDeclaration(Test); }; NewObjectListDefinitionID(Test, -1); Test::Test() { this->registerObject(this, Test::objectList); // this->setClassID(CL_PARENT_NODE, "Test"); // std::cout << "Test()\n"; }; Test::~Test() { // std::cout << "~Test()\n"; } class Bone : public Test { public: Bone() { this->registerObject(this, Bone::objectList); //this->_id.listInheritance(); std::cout << "LeafID:" << this->_id.leafClassID() << std::endl; //std::cout << "Bone()\n"; }; ~Bone() { // std::cout << "~Bone()\n"; }; NewObjectListDeclaration(Bone); }; NewObjectListDefinitionID(Bone, -1); int main() { #define ITERATIONS 20 #define COUNT 100 for (unsigned int i = 0; i < ITERATIONS; ++i) { std::cout<< i << std::endl ; Bone* test = new Bone[COUNT]; delete[]test; } // char tmp[100]; // for (unsigned int i = 0 ; i < 100; ++i) // { // sprintf(tmp, "Tmp_%d", i); // test[i].setName(tmp); // } // Test::objectList.debug(); // //test->setName("Test-object"); // // std::cout << "Here is debug of all BaseObject\n"; // BaseObject::objectList.debug(); // // delete bone; // delete []test; // std::cout << "Again\n"; // BaseObject::objectList.debug(); }