例如,我正在编写一个战斗模拟器,我想为每个回合实例化一个对象(每个Turn对象保存一个与当前转弯数和转弯所属的Unit对象相关的值)。
const int MAX_TURNS = 30;
for (int i = 1; i < MAX_TURNS; i++)
{
Turn phase[i];
}
这就是问题所在。我实例化一个对象时不能使用[i],因为它不是一个常量值。有人可以向我解释为什么这是/以任何方式解决这个问题?
这可能是一个愚蠢的问题,但我认为这样的事情可以节省时间并且更容易通过对象进行参考?
谢谢!
答案 0 :(得分:4)
您提供的代码尝试在每次迭代时创建i
个对象。所以在第一次迭代中将有1个对象,在第二次迭代中将有2个对象。要实现这一点,您必须使用某种形式的动态数组。最好的方法是使用标准容器,如std::vector
:
std::vector<Turn> phase(i);
但是,根据您的描述,听起来您只想在每次迭代时使用新的Turn
对象。这甚至不需要数组:
for (int i = 1; i < MAX_TURNS; i++)
{
Turn phase;
// Use phase
}
每次迭代都将从创建新的Turn
对象开始。
现在,根据您的评论,您似乎想要一个MAX_TURNS
Turn
个数组:
Turn phases[MAX_TURNS];
for (int i = 0; i < MAX_TURNS; i++)
{
// use phases[i];
}
请注意,我已从i
启动0
,因为数组的编号为0.因此,第一个Turn
为phases[0]
,第二个为phases[1]
等等。