typeid() returns extra characters in g++

后端 未结 3 1887
南旧
南旧 2020-12-05 14:32
class foo
{
public:
  void say_type_name()
  {
    std::cout << typeid(this).name() << std::endl;
  }
};

int main()
{
  foo f;;
  f.say_type_name();
}
<         


        
3条回答
  •  不思量自难忘°
    2020-12-05 15:16

    std::type_info::name() returns an implementation specific name. AFAIK, there is no portable way to get a "nice" name, although GCC has one. Look at abi::__cxa_demangle().

    int status;
    char *realname = abi::__cxa_demangle(typeid(obj).name(), 0, 0, &status);
    std::cout << realname;
    free(realname);
    

提交回复
热议问题