在C++中获取对象ID

在C++中获取对象ID,c++,visual-c++,boost,C++,Visual C++,Boost,无论何时从一个类实例化一个对象,我都需要捕获它的对象ID。是否有任何可以帮助捕获此信息的boost调用 Class1 obj1(); Class2 obj2(); 我想知道这些对象是如何存储的,是否有与之相关联的ID 编辑: 这样做的目的是了解对象在创建和销毁时何时跟踪对象。其中有多少个存在,以及是否所有对象都已正确销毁。如果您需要唯一的对象id,您应该自己关心这个id。例如,您可以决定所有对象都继承自超类,如 class ObjectWithId { uint64_t _id;

无论何时从一个类实例化一个对象,我都需要捕获它的对象ID。是否有任何可以帮助捕获此信息的boost调用

Class1 obj1();
Class2 obj2();
我想知道这些对象是如何存储的,是否有与之相关联的ID

编辑:
这样做的目的是了解对象在创建和销毁时何时跟踪对象。其中有多少个存在,以及是否所有对象都已正确销毁。

如果您需要唯一的对象id,您应该自己关心这个id。例如,您可以决定所有对象都继承自超类,如

 class ObjectWithId {
    uint64_t _id;
    static uint64_t _counter_;
 protected:
    ObjectWithId() : _id(++_counter_) {};
 /// etc....
 };
然而,你应该小心,并考虑什么id应该有一个副本,或移动,等等。。。顺便说一句,上面的类不是线程安全的。您可能需要使用原子计数器,例如,等等

阅读关于……的文章

正如您所评论的,您有时可能需要ID。它们可以由一些外部的均值提供,例如在数据库中插入新的东西,然后使用该数据库在每个C++对象构造中提供的ID,或者使用类似的东西,或者生成一个随机字符串等等。 您也可以只需要非唯一但通常不同的ID,例如,如果您只是将它们用于哈希代码计算。在实践中,您可能只想使用一些fast(可能只是简单的lrand48)来获取它们

请注意,标准C++11不需要任何唯一的id:他们通常希望对所包含的类进行排序,例如,或只是一个哈希代码,可能还有一个相等测试,例如,它的相等测试,并且他们总是通过可选的模板参数给出显式给出比较和/或哈希函数的可能性


顺便说一句,一个很好的打猎工具是或一些专有的等价物。你可能应该了解更多关于C++标准的头。< /P> C++中没有内置的对象ID。你的对象实际上是函数声明。你说的“对象ID”是什么意思?你应该编辑你的问题来解释为什么你需要这样的对象ID@请检查我的编辑。如果对象实例代表某个东西,那么应该跨进程边界使用。这个解决方案不会有多大帮助。至少应该提到,例如数据库引擎或UUID机制也提供对象ID。@πάνταῥεῖ: 谢谢,我改进了我的答案。