你好,我正在从一本有点烂的书中学习,当我完成本章时,我没有发现任何关于此错误的信息,我一周尝试了aprox来修复它,但我负担不起,所以我来了xd。这里有一些代码“声明”:
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中遇到以下错误的代码,强调了“变量”
(E0289)没有构造函数“ varaible :: variable”的实例与参数列表匹配
答案 0 :(得分:0)
编译器给出的错误消息是准确无误的。这里有两个可能的修复:
更多详细信息:
定义构造函数:
class variable {
public:
variable(string n = {}, double v = 0.0) : name{n}, value{v} {}
string name;
double value;
};
指定合理的默认值可确保您也可以对“默认”实例化使用相同的构造函数。
对于第二种方法:您需要做的就是使用括号初始化,如下所示:
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} );