【发布时间】:2013-05-07 09:02:22
【问题描述】:
例如,我正在编写一个战斗模拟器,我想为每个回合实例化一个对象(每个 Turn 对象都有一个与当前回合号和回合所属的 Unit 对象相关的值)。
const int MAX_TURNS = 30;
for (int i = 1; i < MAX_TURNS; i++)
{
Turn phase[i];
}
这就是引发问题的原因。当我实例化一个对象时,我不能使用 [i],因为它不是一个常量值。有人可以向我解释为什么这是/解决这个问题的任何方法吗?
这可能是一个愚蠢的问题,但我认为这样的事情会节省时间并且更容易通过对象进行引用?
谢谢!
【问题讨论】:
-
你想要每回合一个对象,还是当前回合中的
i对象?Turn phase[i];将(如果i是一个常量表达式)创建i对象,而不仅仅是一个。 -
但这只是创建对象而没有做任何其他事情。一旦循环结束,所有对象都会调用析构函数吗?如果您想创建对象并让它们在循环之外存活,则应在堆上分配。
-
我想要的是一个预加载的空白回合列表,以便在生成战斗时,我可以使用两个单位的速度值来确定哪个回合属于谁。本质上,我只是希望它们具有以数字结尾的名称,例如:
-
阶段1、阶段2、阶段3等
-
@Iskardes 如果您希望他们有名字,为什么不在
Turn内有一个成员来保存他们各自的名字?
标签: c++ class constants instantiation