【发布时间】:2011-12-12 14:27:25
【问题描述】:
在注册对象必须具有唯一名称的系统中,我想在名称中使用/包含对象的 this 指针。我想要最简单的方法来创建??? where:
std::string name = ???(this);
【问题讨论】:
-
将其转换为代表地址的十六进制字符串?
-
查看这个问题的答案:stackoverflow.com/questions/1255366/…
-
听起来是个坏主意:您将对象的身份与其内存位置联系起来:如果您尝试在应用程序的未来版本中移动它怎么办?您的代码将以非常不愉快的方式中断。
-
同意,如果您想要为每个对象拥有唯一的名称,只需在您的类的构造函数中分配一个不同的字符串。
-
如果您的应用程序可以有多个实例,您的方法可能会失败,因为不同的实例可能具有相同的(虚拟)地址。