Symbol
変数を表すというオブジェクトがあります。シンボルには、ブール属性used
がありinitialized as false
ます。この条件は、関数が使用されたことを示すために関数を解決するために呼び出された場合に true に変更されます。Symbol
が未使用でused
true に変更されていない場合、何らかの理由で false ではなく値 204 が返されます。
シンボルを定義する 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;
}
なぜこれが起こっているのでしょうか?