1

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

const int MAX_TURNS = 30;

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

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

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

谢谢!

4

1 回答 1

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 Turns 数组:

Turn phases[MAX_TURNS];
for (int i = 0; i < MAX_TURNS; i++)
{
    // use phases[i];
}

请注意,我是从 0 开始i索引0的。所以第一个Turnphases[0],第二个是phases[1],依此类推。

于 2013-05-07T09:04:14.293 回答