C ++错误:类型名称不允许数组

时间:2013-12-07 07:15:49

标签: c++ arrays

class Zombie
{
    public:
        Zombie();
        Zombie(int howTall);
        Zombie(int howTall, int howHeavy);
        int getHeight();
    private:
        int height;
        int weight;
};

Zombie::Zombie()
{
    height = 6;
    weight = 180;
}

int main()
{
    Zombie army[4];

    for(int i = 0; i < 4; i++)
        army[i] = Zombie;

}

当我尝试设置军队[i] = Zombie时,为什么会出现错误? Army是僵尸阵列,我已经为Zombie类编写了一个默认构造函数。当我用Zombie()替换Zombie时,代码有效,但是不应该省略()调用默认的构造函数吗?

未显示:已实现其他构造函数和方法。

我知道如果我宣布军队是一个指向僵尸的指针并且做军队[i] =新的僵尸它会起作用,但我不知道为什么上面的代码没有。

由于

2 个答案:

答案 0 :(得分:2)

当你这样做时:

Zombie army[4];

你已经构建了4个高度为6且重180的僵尸。默认构造函数被调用4次(尝试在其中添加对std::cout的调用,你会看到!)。

因此,除非您想要(无论出于何种原因),否则您在循环中尝试做的事情,再次构建新的僵尸 。在这种情况下,正确的语法是:

army[i] = Zombie();

答案 1 :(得分:0)

因为您正在尝试分配类型而不是该类型的对象。

除了你已经拥有军队中的对象之外,当你想用'new Zombies'覆盖值时,你现在只需要分配一个新对象