Возврат имени класса в C++ (typeid)

программирование C++ cpp gcc

Есть ли какой-нибудь стандартный способ приведения имени класса к человеческому виду при использовании typeid (то есть к точно тому имени, которое было указано в исходном коде программы)? Пробую выполнить код:

#include <iostream>
#include <typeinfo>

using namespace std;

class Layer { };

int main()
{
cout << "Type name: " << typeid(Layer).name() << endl;

Layer l;
cout << "Type name: " << typeid(l).name() << endl;
return 0;
}

На gcc version 4.5.2 20110127 (prerelease) (GCC) под GNU/Linux x86_64 и получаю вывод:

Type name: 5Layer
Type name: 5Layer

Вместо простого "Layer".
Ответы:
name вендорно-зависимая вещь, т.е. для разных компиляторов вывод будет различным (где-то будет Layer, где-то будет class Layer).
в 2008 студии пишет "class Layer", разве что обрезать строку =\


14 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.