指向 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++ 类数组的基本指针的主要内容,如果未能解决你的问题,请参考以下文章