如何在C ++中将类的名称作为std :: string?

时间:2018-04-21 15:53:13

标签: c++ macros

我希望能够将每个对象的类名称设为std::string。简单的解决方案是为每个类定义一个虚函数get_name

class Class1 {
   std::string get_name () { return "Class1";}
}

此过程可能容易出错,因为它需要复制并粘贴每个类的类名。有没有更好的方法在编译时使用MACRO或任何其他技巧自动生成此成员方法?

[UPDATE]:

我刚搜索了可用的答案,最好的选择是:

struct Class1 {
    std::string get_name() {
        return __PRETTY_FUNCTION__;
    };

    std::string get_name2() {
        return typeid(*this).name();
    };
};

结果需要一些后期处理:

std::__cxx11::string Class1::get_name()
4Class1

0 个答案:

没有答案