0

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 函数中,我想定义一个balls 数组,所以我编写了以下代码:

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

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

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

4

1 回答 1

9

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

于 2012-12-06T21:20:52.860 回答