【问题标题】:Basic pointer to array of class for c++指向 C++ 类数组的基本指针
【发布时间】:2012-02-11 07:56:16
【问题描述】:
AIBase* allai[2];
AIBase *z0AI = new AIA;
    AIBase *z1AI = new AIB;
allai[0] = z0AI;//this this gives me an error
allai[1]= z1AI;

AIBase 是超类,AIA 和 AIB 继承自 AIBase 语法有什么问题,我需要一些帮助来解决这个问题 错误一:

错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 错误 C2466:无法分配常量大小 0 的数组 错误 C2040:“allai”:“int []”与“AIBase *[2]”的间接级别不同

为什么这段代码必须在函数范围内?这不能在全球范围内工作吗?

【问题讨论】:

  • 请不要让我们猜测。显示错误消息(这很重要)。
  • 这个sn-p没什么问题。 ideone.com/UEC0k
  • 你写在函数范围内吗?

标签: c++ class


【解决方案1】:

在 C++(和 C)中,不是变量初始化器的可执行代码必须出现在函数中。可执行代码不能出现在文件范围内(即任何函数之外)。

所以,只需将您的代码放在一个函数中:

int main(int, char *[])
{
    AIBase* allai[2];
    AIBase *z0AI = new AIA;
    AIBase *z1AI = new AIB;
    allai[0] = z0AI;
    allai[1]= z1AI;
}

【讨论】:

  • 这是正确的。然而,为了迂腐,只有最后两行需要在函数内部;前三个可以出现在文件范围内。 (不是推荐...)
猜你喜欢
  • 2018-08-26
  • 2019-11-13
  • 1970-01-01
  • 1970-01-01
  • 2018-03-24
  • 1970-01-01
  • 2015-08-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多