这是我在“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 ++编译。
答案 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
...
}
因此您要么必须定义默认构造函数,要么使用一些参数调用相应的构造函数。
“然后它列出了作为董事会建设者的候选人。”
那是因为编译器想帮助你,所以它列出了实际可用(定义)的可能的构造函数。