web-dev-qa-db-ja.com

コンストラクターに「一致する関数呼び出しがありません」

これは、「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)

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

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

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

11
Jonathan Wrona

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

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

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

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

"そして、ボードコンストラクターである候補をリストします。"

これは、コンパイラーがあなたを助けたいので、実際に利用可能(定義済み)の可能なコンストラクターをリストするためです。

16
LihO