LINUX.ORG.RU
распарсить typeid(экземпляр класса).name()

как это к примеру делает с++filt - я в свое время искал более простой и компактный код но так и не нашел :(

sS ★★★★★
()
Ответ на: комментарий от anonymous
Примерчика не у кого нет как перед именем класса полученного таким способом, убрать цифры?
anonymous
()
Ответ на: комментарий от anonymous
>А примерчик можно?

#include <iostream>
class TestClass
{
 
};
int main() {
TestClass a;
std::cout << typeid(a).name() << "\n";  
return 0;
}
sS ★★★★★
()
Ответ на: комментарий от anonymous
>Примерчика не у кого нет как перед именем класса полученного таким способом, убрать цифры?

Цифра это число символов - так что atoi(a) и вперед

sS ★★★★★
()
Ответ на: комментарий от sS
Я чтобы получить имя класса делаю так:

const char* TObject::getClassName() { char buf[5]; sprintf(buf,"%d",atoi(typeid(*this).name())); return typeid(*this).name()+strlen(buf); }

Может можно как то по компактней?

anonymous
()
Ответ на: комментарий от sS
Я чтобы получить имя класса делаю так:

const char* TObject::getClassName()
{
char buf[5];
sprintf(buf,"%d",atoi(typeid(*this).name()));
return typeid(*this).name()+strlen(buf);
}

Может можно как то по компактней?
anonymous
()
Ответ на: комментарий от anonymous
>Может можно как то по компактней?

Шутник вы батенька ;)

hint: попробуйте засунуть в ваш код класс, основанный на многопараметрическом темплайте и отнаследованный от нескольких таких же сложных темплайтов да еще и с различными квалификаторами

sS ★★★★★
()
Ответ на: комментарий от anonymous
Есть файл

#include cxxabi.h

У него есть функция __cxa_demangle, которая возвращает читаемое имя класса. А уж остальное - как сказали. А лучше - по регексу разобрать. Надёжнее будет

adarovsky ★★★★
()
Ответ на: комментарий от sS
>hint: попробуйте засунуть в ваш код класс, основанный на >многопараметрическом темплайте и отнаследованный от нескольких таких же >сложных темплайтов да еще и с различными квалификаторами

А как это влияет на имя класса?
Что, вообще советуете?
anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.