返回' shared_ptr'班级名称

时间:2018-06-11 12:50:18

标签: c++ shared-ptr

获得“shared_ptr”的最佳方法是什么?班级名称?

让我说我有:

std::shared_ptr<Object> objPtr;

我怎样才能得到&#34;对象&#34;作为一个字符串?

2 个答案:

答案 0 :(得分:3)

你可以这样做:

typeid(decltype(*objPtr)).name()

但是请注意,它返回的名称可能是"mangled."如何完成此操作,以及如何“解码”名称,取决于平台(又称“实现定义”)。

答案 1 :(得分:1)

作为字符串的类的名称通常在运行时不可访问。最简单的方法是将类名定义为对象的const成员字段,作为建议的注释之一。

但是,我提醒说,很可能需要字符串名称的程序设计是一个非常糟糕的主意,并鼓励你更好地利用C ++的强类型性质而不是检查名称是否符合某些条件。当然,除非您只是想要调试日志记录的类名称。