未定義のエラーを示すと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を返すことはありません。どうして?これをどうやって解決するのですか?
正確にどのようなエラーが発生しますか?エラーメッセージには何が表示されますか?あなたは実際にそれを読もうとしましたか?かなり自明でなければなりません。 "あなたのクラスに宣言されたget_valueメソッドはありません" – Ap31
私たちがそれを遵守できるように、与えられたコードを完成してください:最小の完全な例にしてください。現在のところ、これはコンパイルされません –