2013-10-22 23 views
10

これは "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 ++でコンパイルしています。

答えて

14

error: no matching function for call to 'Board::Board()'

は、クラスBoardにdeafaultコンストラクタがないことを意味します。あなたはデフォルトコンストラクタを定義したり、いくつかの引数を持つ適切なコンストラクタを呼び出す必要がありどちらか

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

Solverのコンストラクタでは、おそらくのようなものをやっています。

"And then it lists the candidates which are the Board constructors."

これは、コンパイラが実際に利用可能な(定義されている)コンストラクタを一覧表示できるようにするためです。

関連する問題