11

これは、「solver.h」ファイルにあるコンストラクタ宣言です。

Solver(const Board &board_c, int max_moves_c);

コンパイルしようとすると、次のエラーが発生します...

solver.cpp: In constructor 'Solver::Solver(const Board&, int)':
solver.cpp:6:55: error: no matching function for call to 'Board::Board()'
  Solver::Solver(const Board &board_c, int max_moves_c)

次に、Board コンストラクターである候補を一覧表示します。

このエラーが発生する理由がわからないため、何が間違っているのかわかりません。

g++でコンパイルしています。

4

1 に答える 1

17

エラー: 'Board::Board()' の呼び出しに一致する関数がありません

クラスBoardにデフォルトのコンストラクターがないことを意味します。あなたのコンストラクターでSolverは、おそらく次のようなことをしています:

Solver::Solver(const Board &board_c, int max_moves_c) {
    Board b; // <--- can not construct b because constructor is missing
    ...
}

したがって、デフォルトのコンストラクターを定義するか、いくつかの引数を指定して適切なコンストラクターを呼び出す必要があります。

「そして、Board コンストラクターである候補をリストします。」

これは、コンパイラーが実際に利用可能な (定義された) 可能なコンストラクターをリストするために、コンパイラーがユーザーを支援したいためです。

于 2013-10-22T17:08:42.567 に答える