這是我的代碼:如何檢查派生類中對象的類型名稱?
代碼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