2013-07-10 74 views
2

出於某種原因,我不能一組指針來初始化一個抽象數據類型,像這樣:不能分配一個指向抽象類型對象的指針?

gkAnimation* run = NULL, walk = NULL, idle = NULL; 

我收到一個錯誤說:

jni/STEP3D_GK_Wrapper_JNI.cpp:283:34: error: cannot allocate an object of abstract type 'gkAnimation' 

我的天堂」這個問題之前就已經發生過了,我不認爲這個類本身正在做什麼特別的事情來發生這個錯誤,或者這很重要。如果有幫助,我可以發佈更多的代碼,但我非常難以忍受。有任何想法嗎?

+0

這個問題必須是重複的,對不對? –

+2

標籤:「自我超越」。 –

+0

我不確定是否看到錯誤,但是我將按照「將所有聲明放在單獨的行中」 –

回答

8

的問題是,這句法:

gkAnimation* run = NULL, walk = NULL, idle = NULL; 

不代表:

gkAnimation* run = NULL; 
gkAnimation* walk = NULL; 
gkAnimation* idle = NULL; 

這意味着:

gkAnimation* run = NULL; 
gkAnimation walk = NULL; /* invalid */ 
gkAnimation idle = NULL; /* invalid */ 

您需要在列表中明確定義每個項目一個指針:

gkAnimation *run = NULL, *walk = NULL, *idle = NULL; 

這就是爲什麼許多人喜歡將指針放置在變量旁邊而不是旁邊的語法樣式。

+2

...以及爲什麼許多人更喜歡每個源代碼行至多聲明一個變量的約定。 – Casey

+0

@Casey我也不是一個很大的粉絲。 –

+1

謝謝,我也發現這有幫助:http://stackoverflow.com/questions/13618282/c-declaring-multiple-object-pointers-on-one-line-causes-compiler-error – mpellegr

相關問題