这是我的代码:如何检查派生类中对象的类型名称?
代码class Base { /* something */ };
class Derived : public Base { /* something */ };
vector<Base*> v; // somebody else initializes it, somewhere
int counter = 0;
for (vector<Base*>::iterator i=v.begin(); i!=v.end(); ++i) {
if (typeof(*i) == "Derived") { // this line is NOT correct
counter++;
}
}
cout << "Found " << counter << " derived classes";
一号线是不正确的。我应该如何正确书写它?提前谢谢了!
谢谢,现在一切都很明确:) – yegor256 2010-05-05 15:41:45
我发现这个链接:http://www.boost.org/doc/libs/1_42_0/libs/type_traits/doc/html/boost_typetraits/reference/is_same.html。看起来像这个库可以帮助.. – yegor256 2010-05-05 16:51:22
@Vincenzo:这只在编译时才有效。在编译时,向量中的所有静态类型都是相同的。你需要一个运行时机制。 – UncleBens 2010-05-05 17:35:54