我如何使用非常量值来实例化类的多个对象?

时间:2013-05-07 09:02:22

标签: c++ class const instantiation

例如,我正在编写一个战斗模拟器,我想为每个回合实例化一个对象(每个Turn对象保存一个与当前转弯数和转弯所属的Unit对象相关的值)。

const int MAX_TURNS = 30;

for (int i = 1; i < MAX_TURNS; i++)
{
    Turn phase[i];
}

这就是问题所在。我实例化一个对象时不能使用[i],因为它不是一个常量值。有人可以向我解释为什么这是/以任何方式解决这个问题?

这可能是一个愚蠢的问题,但我认为这样的事情可以节省时间并且更容易通过对象进行参考?

谢谢!

1 个答案:

答案 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.因此,第一个Turnphases[0],第二个为phases[1]等等。