构造函数中的“没有匹配的函数调用”
Posted
技术标签:
【中文标题】构造函数中的“没有匹配的函数调用”【英文标题】:"No matching function call" in constructor 【发布时间】:2013-10-31 16:35:18 【问题描述】:这是我在“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】:错误:没有匹配的函数调用'Board::Board()'
表示Board
类缺少默认构造函数。在Solver
的构造函数中,您可能正在执行以下操作:
Solver::Solver(const Board &board_c, int max_moves_c)
Board b; // <--- can not construct b because constructor is missing
...
所以您要么必须定义默认构造函数,要么使用一些参数调用适当的构造函数。
“然后它列出了董事会建设者的候选人。”
那是因为编译器想要帮助你,所以它列出了实际可用(已定义)的可能构造函数。
【讨论】:
以上是关于构造函数中的“没有匹配的函数调用”的主要内容,如果未能解决你的问题,请参考以下文章