【发布时间】:2012-11-22 01:12:35
【问题描述】:
这与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> >’
【问题讨论】:
-
@John 不是真的重复:这个问题更多的是对另一个问题的跟进。
-
@KonradRudolph:请再次检查我链接的问题。
-
@John 我做到了。看看答案。事实上,接受的答案直接说你需要一些宏观绒毛来解决这个问题——这导致我们来到这里。
-
@KonradRudolph:对不起,我不明白这个问题的哪一部分没有被 OP 链接的问题和我链接的问题的组合所涵盖?