C ++我在使用数组/动态内存时遇到了一些问题

时间:2013-12-03 22:44:18

标签: c++ arrays dynamic indexing copy

所以我正在制作一个蹩脚的小滑雪游戏(这是我所有的问题都是关于的)而且我遇到了一些问题。 我有一个Biome类,它有一个动态数组来存储该生物群系的可能障碍(obstsInBiome)。这是构造函数:

Biome::Biome(Obstacle obsts[], int amountOfObsts)
{
    maxObstAmount = 10; // Max amount of obstacles to spawn in each biome
    obstAmount = amountOfObsts; // The amount of obstacles passed in in the obsts parameter

    // This part copys the array passed in to the obstsInBiome array (Class member to store obstacles)
    // I think this is where the error may be
    obstsInBiome = new Obstacle [amountOfObsts]; // Creating array to hold the possible obstacles in this biome
    for (int x = 0; x < amountOfObsts; x++) // Filling the obstacle array with the obstacles passed in
    {
        obstsInBiome[x] = obsts[x];
    }
}

然后创建一个新的生物群系,我使用它:

Obstacle villageObsts[] = {tree, rock, cabin, log}; // tree, rock, and cabin are all Obstacles
Biome village(villageObsts, 4);

在此代码中的某处,obstsInBiome的第一个元素未正确设置。  village.obstsInBiome[0]就是我的意思。

当我尝试将其绘制到屏幕时,它不会出现,并且玩家会发生看不见的碰撞,就像他们碰到障碍物一样。阵列的其余部分(岩石,小屋和日志)都完美无缺。 village.obstsInBiome[1 through 3]一切正常。

有人可以在此代码中指出错误吗?

1 个答案:

答案 0 :(得分:0)

乍一看,特别是在您认为错误发生的地方,可能是在树的复制构造函数的实现中。我不知道究竟是什么“障碍”,也不知道这4个实例的具体特征是什么。也许树实例有某种数据不能干净地复制,而其他3实例。

如果您不确定复制构造函数的含义,那么这可能是一件好事。

http://en.wikipedia.org/wiki/Copy_constructor