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)

然后列出了作为董事会构建者的候选人。

我不确定我做错了什么,因为我看不出为什么我应该得到这个错误。

我正在用 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
    ...
}

所以您要么必须定义默认构造函数,要么使用一些参数调用适当的构造函数。

“然后它列出了董事会建设者的候选人。”

那是因为编译器想帮助你,所以它列出了实际可用(定义)的可能的构造函数。

于 2013-10-22T17:08:42.567 回答