我以这种方式定义了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&)
答案 0 :(得分:9)
如果您定义了复制构造函数ball::ball(const ball&)
(您在代码中实际注释掉了),则不会有编译器生成的默认默认构造函数。需要有一个默认构造函数才能使数组定义起作用(因为它默认初始化每个元素)。所以只需提供一个默认构造函数:ball:ball() { }
。您可能希望在此构造函数中初始化成员变量。