2011-02-24 24 views
-3

當我使用dynamic_cast()它提供了以下錯誤:當我使用dynamic_cast它會給出錯誤?

error: 'dynamic_cast' was not declared in this scope

在此先感謝!

+1

是否鍵入了錯誤的錯誤信息,或者你打錯字的代碼?你能顯示代碼嗎? – 2011-02-24 13:15:48

+4

我想,你需要閱讀文檔 - http://www.cplusplus.com/doc/tutorial/typecasting/ - dynamic_cast部分。沒有名稱爲「dynamic_cast」的函數 – Igor 2011-02-24 13:18:51

+2

您在問題中使用了'dynamic_cast'的三個地方中的兩個地方,你拼錯了它。拼寫在編程中很重要。 – meagar 2011-02-24 13:35:53

回答

7

的語法錯誤味精你提供如下

dynamic_cast<TargetType>(SourceObject) 

,有一個錯字(dyanmic VS動態)

0

的語法dynamic_cast<Foo*>(BarObj);,所以它不是作爲函數調用。

+0

看起來像是對模板函數的顯式特化的調用......它可以作爲函數調用來實現,或者由編譯器專門處理。 – Steve 2011-02-24 13:57:15

1

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! 
+0

絕對正確。但在這種情況下,它會給出不同的編譯錯誤 – 2011-02-24 13:37:53

+0

@Armen:什麼編譯錯誤?在哪一行?看到這個:http://www.ideone.com/07Jyg – Nawaz 2011-02-24 14:27:13

+0

@Nawaz:我的意思是,如果問題是nonpolymorphic類型是dynamic_cast的事實,錯誤不會說dynamic_cast是未聲明的標識符。對不起,錯誤語錄 – 2011-02-24 14:28:41

相關問題