AIBase* allai[2];
AIBase *z0AI = new AIA;
    AIBase *z1AI = new AIB;
allai[0] = z0AI;//this this gives me an error
allai[1]= z1AI;

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

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

为什么此代码必须在功能范围内?无法在全局范围内开展这项工作?

最佳答案

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

因此,只需将代码放入函数中:

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

07-24 14:14