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は前に定義されており、数学のベクトルを表します)

メイン関数で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 に答える