2017-04-16 7 views
1

未定義のエラーを示すとC++第7章演習4との練習:C++プログラミングの原則と実践の章7エクササイズ4 Symbol_table :: GET_VALUEは常にビャーネ・ストロヴストルップのプログラミングの原理から

is_declared「GET_VALUE()、SET_VALUE()、( )、define_name()関数はすべて変数var_table上で動作します。Vector型のメンバーvar_tableとメンバ関数get()、set()、is_declared、declare()を使用してSymbol_tableというクラスを定義します。 Symbol_table型の変数です。

class Variable { 
public: 
    string name; 
    double value; 
    bool var; // variable (true) or constant (false) 
    Variable(string s, double d, bool b) :name(s), value(d), var(b) { } 
private: 
}; 
class Symbol_table { 
public: 
    double get(string s); 
    void set(string s, double d); 
    bool is_declared(string var); 
    double declare(string s, double val, bool var = true); //default is variable 
private: 
    vector<Variable> var_table; 
}; 
double Symbol_table::get_value(string s) { 
    // return the value of the Variable names s 
    for (Variable& v : var_table) { 
     cout << "getting variable: " << v.name << " " << v.value << " " << v.var << endl; 
     if (v.name == s) { 
      return v.value; 
     } 
    } 
    error("get: undefined variable ", s); 
} 

基本的に、変数には名前と値が割り当てられ、ブール値は定数か変数かを判断するために使用されます。すべての変数はSymbol_table :: declare()によって宣言され、ベクトルvar_tableに入れられます。 Symbol_table :: get_value()は、変数の値を特定の名前で読み取ることになっています。

私はSymbol_table :: get_value()を使うたびにいつもエラーが出ますが、v.valueを返すことはありません。どうして?これをどうやって解決するのですか?

+0

正確にどのようなエラーが発生しますか?エラーメッセージには何が表示されますか?あなたは実際にそれを読もうとしましたか?かなり自明でなければなりません。 "あなたのクラスに宣言されたget_valueメソッドはありません" – Ap31

+0

私たちがそれを遵守できるように、与えられたコードを完成してください:最小の完全な例にしてください。現在のところ、これはコンパイルされません –

答えて

1

あなたはerrata確認する必要があります - 4を行使するための補正を含める:

S/declare_name()/ define_name()/

(Bjarneが彼の上のすべての彼の書籍の正誤表を公開していウェブサイト。)

0

クラスSymbol_tableのメンバ関数がdouble get(string s);と呼ばれていますが、実際にdouble Symbol_table::get_value(string s)

として定義し
double Symbol_table::get(string s) { //instead of get_value(string s) 
関連する問題