无法在C ++中定义结构数组

时间:2012-12-06 21:18:39

标签: c++ arrays structure

我以这种方式定义了ball结构:

struct ball
{
 _vector coordinates;
 _vector velocity;
 _vector acceleration;

 int border;
 int color;
 int radius;

 float mass;

 void step();
 void clear();
 void render();
};

(数据类型_vector之前已定义,它代表数学中的向量)

在main函数中我想定义一个ball的数组,所以我写了这段代码:

int main(int argc, char** argv)
{
    struct ball balls[NO_BALLS];
.
.
.
}

但是当我想编译代码时,我得到了这个错误:

  

调用`ball :: ball()'候选人没有匹配函数是:   ball :: ball(const ball&)

1 个答案:

答案 0 :(得分:9)

如果您定义了复制构造函数ball::ball(const ball&)(您在代码中实际注释掉了),则不会有编译器生成的默认默认构造函数。需要有一个默认构造函数才能使数组定义起作用(因为它默认初始化每个元素)。所以只需提供一个默认构造函数:ball:ball() { }。您可能希望在此构造函数中初始化成员变量。