无法分配指向抽象类型对象的指针?

时间:2013-07-10 19:53:40

标签: c++ compiler-errors abstract-class

出于某种原因,我无法初始化一组指向抽象数据类型的指针,如下所示:

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

我收到一条错误说:

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

我之前没有遇到过这个问题,我认为这个类本身并没有为这个错误做任何特别的事情,或者它很重要。如果它有帮助我可以发布更多代码,但我很难过。有什么想法吗?

1 个答案:

答案 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;

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