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

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
    ...

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

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

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

【讨论】:

以上是关于构造函数中的“没有匹配的函数调用”的主要内容,如果未能解决你的问题,请参考以下文章

Dart中的构造函数

JavaScript中的构造函数

c++中的构造函数

Java中的构造函数Constructor怎么用

Flutter 6种构造函数详解

子父类中的构造函数