當我使用dynamic_cast()
它提供了以下錯誤:當我使用dynamic_cast它會給出錯誤?
error: 'dynamic_cast' was not declared in this scope
在此先感謝!
當我使用dynamic_cast()
它提供了以下錯誤:當我使用dynamic_cast它會給出錯誤?
error: 'dynamic_cast' was not declared in this scope
在此先感謝!
的語法錯誤味精你提供如下
dynamic_cast<TargetType>(SourceObject)
,有一個錯字(dyanmic VS動態)
的語法dynamic_cast<Foo*>(BarObj);
,所以它不是作爲函數調用。
看起來像是對模板函數的顯式特化的調用......它可以作爲函數調用來實現,或者由編譯器專門處理。 – Steve 2011-02-24 13:57:15
dynamic_cast
僅適用於多態類。所以如果你正在使用的類不是多態的,它會給編譯錯誤。
多態類是一個至少有一個虛函數,甚至是析構函數!
使用dynamic_cast
的語法是在這個例子中:
struct A { virtual ~A(){} };
struct B : A { };
B b;
A *pA = &b; //no cast needed here!
B *pB = dynamic_cast<B*>(pA); // dynamic cast is needed here!
絕對正確。但在這種情況下,它會給出不同的編譯錯誤 – 2011-02-24 13:37:53
@Armen:什麼編譯錯誤?在哪一行?看到這個:http://www.ideone.com/07Jyg – Nawaz 2011-02-24 14:27:13
@Nawaz:我的意思是,如果問題是nonpolymorphic類型是dynamic_cast的事實,錯誤不會說dynamic_cast是未聲明的標識符。對不起,錯誤語錄 – 2011-02-24 14:28:41
是否鍵入了錯誤的錯誤信息,或者你打錯字的代碼?你能顯示代碼嗎? – 2011-02-24 13:15:48
我想,你需要閱讀文檔 - http://www.cplusplus.com/doc/tutorial/typecasting/ - dynamic_cast部分。沒有名稱爲「dynamic_cast」的函數 – Igor 2011-02-24 13:18:51
您在問題中使用了'dynamic_cast'的三個地方中的兩個地方,你拼錯了它。拼寫在編程中很重要。 – meagar 2011-02-24 13:35:53