获得“shared_ptr”的最佳方法是什么?班级名称?
让我说我有:
std::shared_ptr<Object> objPtr;
我怎样才能得到&#34;对象&#34;作为一个字符串?
答案 0 :(得分:3)
你可以这样做:
typeid(decltype(*objPtr)).name()
但是请注意,它返回的名称可能是"mangled."如何完成此操作,以及如何“解码”名称,取决于平台(又称“实现定义”)。
答案 1 :(得分:1)
作为字符串的类的名称通常在运行时不可访问。最简单的方法是将类名定义为对象的const成员字段,作为建议的注释之一。
但是,我提醒说,很可能需要字符串名称的程序设计是一个非常糟糕的主意,并鼓励你更好地利用C ++的强类型性质而不是检查名称是否符合某些条件。当然,除非您只是想要调试日志记录的类名称。