Вернуть имя класса «shared_ptr» - PullRequest
0 голосов
/ 11 июня 2018

Каков наилучший способ получить имя класса shared_ptr?

Допустим, у меня есть:

std::shared_ptr<Object> objPtr;

Как я могу получить "Object" в виде строки?

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

Имя класса в виде строки обычно недоступно во время выполнения.Самое простое, что можно сделать, это просто определить имя класса как поле константного члена объекта, как один из предложенных комментариев.

Однако я предупреждаю, что весьма вероятно, что программные проекты, которые требуют строковое имяэтого класса - очень плохая идея, и они побуждают вас лучше использовать строго типизированный характер C ++, а не проверять, удовлетворяет ли имя определенным условиям.Если, конечно, вы просто не хотите назвать имя класса для ведения журнала отладки.

0 голосов
/ 11 июня 2018

Вы можете сделать это следующим образом:

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

Заметьте, однако, что возвращаемое имя может быть "искажено". Как это сделать и как "разобрать"name, зависит от платформы (или «определена реализация»).

...