返回信息流如题,要怎么cout变量的类型啊...
这是一条镜像帖。来源:北邮人论坛 / cpp / #98341同步于 2018/9/13
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
expected primary-expression before ‘typeof’
Riverside
2018/9/13镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
没用过,查了一下
参考https://stackoverflow.com/questions/36446016/expected-expression-before-typeof-or-expected-primary-expression-before-typeo
typeof这玩意不能这么用,因为它是编译期做的东西,有点类似cpp11的auto,如果你非要实现类似效果,只能把你所有的类型都实现一个方法,比如这样
class Shit
{
public:
string to_string() {
return string("Shit");
}
};
然后再实现一个typeof
template<class T>
string typeof(const T& obj) {
return obj.to_string();
}
当然对于基本类型依然没法typeof,这受制于语言,没办法
多说一嘴,对于c/cpp这种强类型的语言,你再不知道变量的类型,那这代码也太丑了…
cout << typeid( pb ).name() << endl;
https://zh.cppreference.com/w/cpp/language/typeid
对的,不推荐。
如果是对于基类和子类之间的判断,那么用dynamic_cast去判断就好了。
c++的RTTI确实做的不是很好。
【 在 wjy1230 的大作中提到: 】
: 楼上说得对,用typeid。但是不推荐用这个,因为C++委员会没有规定输出,所以不同编译器的输出结果是不一样的。