我按如下方式上课:
class Variable {
public:
string name;
double value;
};
用它来制作一个矢量,如下所示:
vector<Variable> var_table;
然后我创建了一个函数is_declared来检查给定的字符串名是否已经存在var_table,并使另一个函数define_name将字符串的值和double放入var_table中新变量的名称和值,如下所示:
bool is_declared(string var) {
for (int i = 0; i < var_table.size(); ++i)
if (var_table[i].name == var)
return true;
return false;
}
double define_name(string var, double val) {
if (is_declared(var))
cerr << var << "declared twice";
var_table.push_back(Variable{var, val});
return val;
}
在第
行var_table.push_back(Variable{var,val});
它显示以下错误:
238预期的初级表达在&#39; {&#39;令牌
请帮助!!!
答案 0 :(得分:1)
您不能将C语言编译器的初始化语法用于低于C ++ 11的合规性级别。您必须使用Variable(var,val)
使其可能正常工作,或使用较新的编译器编译代码。
小记 - 您是否考虑过使用set
来执行此类任务?
答案 1 :(得分:-1)
首先,您需要在Variable类中提供一个构造函数,以将值实例化为变量。
接下来,在该行中,
var_table.push_back(Variable{var,val});
你可以写为,
var_table.push_back(Variable(var,val));