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

mpe*_*egr 2 c++ abstract-class compiler-errors

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

gkAnimation* run = NULL, walk = NULL, idle = NULL;
Run Code Online (Sandbox Code Playgroud)

我收到一个错误说:

jni/STEP3D_GK_Wrapper_JNI.cpp:283:34: error: cannot allocate an object of abstract type 'gkAnimation'
Run Code Online (Sandbox Code Playgroud)

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

Jus*_*ers 8

问题是这个语法:

gkAnimation* run = NULL, walk = NULL, idle = NULL;
Run Code Online (Sandbox Code Playgroud)

并不意味着:

gkAnimation* run = NULL;
gkAnimation* walk = NULL;
gkAnimation* idle = NULL;
Run Code Online (Sandbox Code Playgroud)

它的意思是:

gkAnimation* run = NULL;
gkAnimation walk = NULL; /* invalid */
gkAnimation idle = NULL; /* invalid */
Run Code Online (Sandbox Code Playgroud)

您需要将列表中的每个项目显式定义为指针:

gkAnimation *run = NULL, *walk = NULL, *idle = NULL;
Run Code Online (Sandbox Code Playgroud)

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

  • ...以及为什么许多人更喜欢每个源代码行最多声明一个变量的约定. (2认同)