这与 Is it possible to print a variable's type in standard C++? 是同一个问题但我不想要 RTTI。我正在使用表达式模板(例如 Eigen)编写代码,这意味着我的变量类型可能真的涉及到,而且我不知道实际类型。但是,编译器知道这些类型并且可以在出现问题时告诉我:
error: ‘const struct Eigen::EigenBase<Eigen::Matrix<double, 1, 1, 0, 1, 1> >’ ...
有什么方法可以将变量名转换为具有(静态)类型名称的字符串,以便我可以在不破坏程序的情况下调试程序?例如
int a;
M b;
cout << TYPEOF(a) << endl << TYPEOF(b) << endl;
会打印
int
const struct Eigen::EigenBase<Eigen::Matrix<double, 1, 1, 0, 1, 1> >’
最佳答案
typeid
可以应用于一个类型(5.2.8p4):
std::cout << typeid(int).name() << '\n'
<< typeid(M).name() << '\n';
这不涉及任何运行时开销。
关于c++ - 使用gcc在C++中将静态类型转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13702421/