我有一个名为的对象Symbol
,它代表一个变量。Symbol 具有布尔属性used
,即initialized as false
. 如果调用它来求解函数以显示它已被使用,则此条件将更改为 true。由于某种原因,当Symbol
未使用且used
从未更改为 true 时,它返回值 204 而不是 false。
这是 SymbolTable.h,我在其中定义了一个符号:
class SymbolTable {
public:
SymbolTable() {}
void insert(string variable, double value);
double lookUp(string variable) ;
bool unusedVar() ;
private:
struct Symbol {
Symbol(string variable, double value)
{
this->variable = variable;
this->value = value;
bool used = false;//This is my boolean flag
}
string variable;
double value;
bool used;
};
...
每当我从 SymbolTable 中查找一个值以插入我设置used
为 true 的方程时:
double SymbolTable::lookUp(string variable) {
for (int i = 0; i < elements.size(); i++) {
if (elements[i].variable == variable) {
elements[i].used = true;//Right here it changes to true
return elements[i].value;
}
...
稍后,当我尝试检测是否仍有错误时,它将无法正常工作。当我打印它的值时,used
它会打印204!
bool SymbolTable::unusedVar() {// returns error if Var is not used
int count = 0;
for (int i = 0; i < elements.size(); i++) {
std::cout << "Variable: " << elements[i].variable << " was " << elements[i].used << std::endl;
if ( !elements[i].used ) {
std::cout << "Warning: A variable was not used" << std::endl;
return true;
}
}
return false;
}
为什么会发生这种情况?