C++ Can';是否不分配指向抽象类型对象的指针?

C++ Can';是否不分配指向抽象类型对象的指针?,c++,compiler-errors,abstract-class,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' 我以前从来没有遇到过这个问题,我认为类本身没有做任何特殊的事情来让这个错误发生,或者说这很重要。如果有

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

gkAnimation* run = NULL, walk = NULL, idle = NULL;
我得到一个错误,说:

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

我以前从来没有遇到过这个问题,我认为类本身没有做任何特殊的事情来让这个错误发生,或者说这很重要。如果有帮助的话,我可以发布更多的代码,但我在这里被难住了。有什么想法吗?

问题是这种语法:

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;

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

这个问题必须是重复的,对吗?标记:“self-outsmating”。我不确定我是否看到了错误,但我将使用“将所有声明放在单独的行上”…还有为什么很多人更喜欢每个源代码行最多声明一个变量的惯例。@Casey我也不太喜欢。谢谢,我也觉得这很有帮助: