C++ 没有构造函数的实例匹配参数列表参数类型是:(std::string, double)
C++ no instance of constructor matches the argument list argument types are: (std::string, double)
你好,我正在从一本有点烂的书中学习,当我完成这一章时,我没有发现任何关于这个错误的信息,我尝试了大约一周的时间来修复它,但我付不起钱,所以我来到这里 xd。这里有一些代码"declaration":
class variable {
public:
string name;
double value;
};
还有:
double define_name(string var, double val)
{
if (is_declared(var)) error(var, "declared twice");
var_table.push_back(variable(var,val));
return val;
}
这是我在 visual studio 中出现以下错误的代码,强调 "variable "
(E0289) 没有构造函数实例 "varaible::variable" 匹配参数列表
编译器给你的错误信息准确无误。这里有两个可能的修复:
- 定义构造函数
- 使用大括号初始化
更多详情:
定义构造函数:
class variable {
public:
variable(string n = {}, double v = 0.0) : name{n}, value{v} {}
string name;
double value;
};
指定合理的默认值可确保您也可以对"default"实例化使用相同的构造函数。
关于第二种方法,你只需要使用大括号初始化,如下所示:
var_table.push_back( {var, val} );
它的工作方式是将提供的初始化列表(按位置)匹配到 struct/class 的成员,使用默认值(数字为 0,用户定义类型为默认构造函数)尾随的,即 var_table.push_back( {var} );
相当于 var_table.push_back( {var, {}} );
相当于 var_table.push_back( {var, 0.0} );
你好,我正在从一本有点烂的书中学习,当我完成这一章时,我没有发现任何关于这个错误的信息,我尝试了大约一周的时间来修复它,但我付不起钱,所以我来到这里 xd。这里有一些代码"declaration":
class variable {
public:
string name;
double value;
};
还有:
double define_name(string var, double val)
{
if (is_declared(var)) error(var, "declared twice");
var_table.push_back(variable(var,val));
return val;
}
这是我在 visual studio 中出现以下错误的代码,强调 "variable "
(E0289) 没有构造函数实例 "varaible::variable" 匹配参数列表
编译器给你的错误信息准确无误。这里有两个可能的修复:
- 定义构造函数
- 使用大括号初始化
更多详情:
定义构造函数:
class variable {
public:
variable(string n = {}, double v = 0.0) : name{n}, value{v} {}
string name;
double value;
};
指定合理的默认值可确保您也可以对"default"实例化使用相同的构造函数。
关于第二种方法,你只需要使用大括号初始化,如下所示:
var_table.push_back( {var, val} );
它的工作方式是将提供的初始化列表(按位置)匹配到 struct/class 的成员,使用默认值(数字为 0,用户定义类型为默认构造函数)尾随的,即 var_table.push_back( {var} );
相当于 var_table.push_back( {var, {}} );
相当于 var_table.push_back( {var, 0.0} );