2

Symbol変数を表すというオブジェクトがあります。シンボルには、ブール属性usedがありinitialized as falseます。この条件は、関数が使用されたことを示すために関数を解決するために呼び出された場合に true に変更されます。Symbolが未使用でusedtrue に変更されていない場合、何らかの理由で 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 から値を検索して式にプラグインするたびに、usedtrue に設定します。

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;
}

なぜこれが起こっているのでしょうか?

4

1 に答える 1