指向 C++ 类数组的基本指针

Posted

技术标签:

【中文标题】指向 C++ 类数组的基本指针【英文标题】:Basic pointer to array of class for 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 你写在函数范围内吗? 【参考方案1】:

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

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

int main(int, char *[])

    AIBase* allai[2];
    AIBase *z0AI = new AIA;
    AIBase *z1AI = new AIB;
    allai[0] = z0AI;
    allai[1]= z1AI;

【讨论】:

这是正确的。然而,为了迂腐,只有最后两行需要在函数内部;前三个可以出现在文件范围内。 (不是推荐...)

以上是关于指向 C++ 类数组的基本指针的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 C++ 中指向该数组的指针访问另一个类中的数组?

C ++在指向结构的指针中访问类数组指针

关于C++基类、派生类的引用和指针

一图总结C++中关于指针的那些事

如何在 C++ 中初始化指向动态二维数组的指针 [关闭]

指向类实例c ++的指针数组