【发布时间】:2021-03-17 15:38:44
【问题描述】:
我正在尝试动态分配对象数组。我的项目中有一个类 Enemy,我想创建 5 个敌人。经过筋疲力尽的研究,我无法为我的问题找到答案。
Enemy* mainEnemy = new Enemy(enemyShip)[5];
有一个错误:不存在从 Enemy 到 Enemy* 的合适转换。
当我删除指针时,这一行没有错误:
Enemy mainEnemy = new Enemy(enemyShip)[5];
但是如何处理这样创建的对象呢?我不能这样设置单个对象的位置:
mainEnemy[0]->StartingPosition(); // no operator "[]" matches these operands . operand types are: Enemy[int]
【问题讨论】:
-
什么是
enemyShip?你想用new Enemy(enemyShip)[5];完成什么?分配一个由 5 个敌人组成的数组,所有这些敌人都是从enemyShip? 构造的 -
enemyShip 是一个船级实例。船*敌人船=新船(&enemyT);类 ship 将敌人纹理作为参数,类敌人将指向船的指针作为参数。我只想动态分配 5 个敌人,对它们进行操作(绘图、设置位置等。我正在尝试用这些对象创建一个数组。
-
我正在尝试动态分配对象数组。 --
std::vector<Enemy> mainEnemy(5, enemyShip); -
您需要发布minimal reproducible example。首先,
&enemyT是可疑的,因为我们不知道这个enemyT对象是在何时何地创建的或其生命周期。不用说,存储任何东西的地址意味着您需要确保在您访问该地址期间,您存储的任何地址都不能超出范围。
标签: c++ arrays dynamic sfml allocation