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

最佳答案



意味着类 Board 缺少默认构造函数。在 Solver 的构造函数中,您可能正在执行以下操作:

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

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



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

关于c++ - "No matching function call"在构造函数中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19524100/

10-13 09:27