构造函数中的“没有匹配的函数调用”

时间:2013-10-22 17:05:48

标签: c++ function object constructor matching

这是我在“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 ++编译。

1 个答案:

答案 0 :(得分:15)

  

错误:没有匹配函数来调用'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
    ...
}

因此您要么必须定义默认构造函数,要么使用一些参数调用相应的构造函数。

  

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

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