我希望能够将每个对象的类名称设为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