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'

我以前没有发生过这个问题,我认为班级本身没有为这个错误的发生做任何特别的事情,或者这很重要。如果有帮助,我可以发布更多代码,但我在这里很困惑。有任何想法吗?

4

1 回答 1

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;

这就是为什么许多人更喜欢将指针放在变量旁边而不是类型旁边的语法风格。

于 2013-07-10T19:55:03.240 回答