【问题标题】:Can't allocate a pointer to object of abstract type?无法分配指向抽象类型对象的指针?
【发布时间】:2013-07-08 22:03:56
【问题描述】:

由于某种原因,我无法像这样初始化一组指向抽象数据类型的指针:

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

我收到一条错误消息:

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

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

【问题讨论】:

  • 这个问题应该是重复的吧?
  • 标签:“自我超越”。
  • 我不确定我是否看到了错误,但我会选择“将所有声明放在单独的行上”

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


【解决方案1】:

问题在于这个语法:

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;

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

【讨论】:

  • ...以及为什么许多人更喜欢每个源代码行最多声明一个变量的约定。
  • @Casey 我也不是超级粉丝。
  • 谢谢,我也觉得这很有帮助:stackoverflow.com/questions/13618282/…
猜你喜欢
  • 2023-02-09
  • 1970-01-01
  • 2015-12-28
  • 1970-01-01
  • 2020-11-01
  • 1970-01-01
  • 2020-03-27
  • 1970-01-01
  • 2010-12-02
相关资源
最近更新 更多