2016-08-19 3 views
0

オブジェクト関数set_and_make_variableを使用すると、正しく動作する名前と値を送信します。しかし、表示current_variablesを使用すると、integersintegers_namesの両方の値を決して設定しないようになります。私はあなたが参照またはポインタなしでクラスに関連付けられている関数から変数配列を変更できると思った。
私は正しくありませんか? operations_and_declerations()クラスで値を保持する配列を取得する

void reset_name(string *variable_names) 
{ 
    for (int i = 0; i < 100; i++) 
    { 
     variable_names[i] = ""; 
    } 
} 
void reset_int_value(int *variable_value) 
{ 
    for (int i = 0; i < 100; i++) 
    { 
     variable_value[i] = 0; 
    } 
} 
int find_next(string variable_names[100]) 
{ 
    for (int i = 0; i < 100; i++) 
    { 
     if (variable_names[i] == "") 
     { 
      return i; 
     } 
    } 
} 


//***************************************************************** 
class variables_integers 
{ 
public: 
    string integer_names[100]; 
    int integers[100]; 

    variables_integers(void); 
    void set_and_make_variable(string, int); 
    void show_current_variables(void); 

}; 

variables_integers::variables_integers(void) 
{ 
    reset_int_value(integers); 
    reset_name(integer_names); 
} 

void variables_integers::show_current_variables(void) 
{ 
    cout << "INTEGERS:" << endl; 

    for (int i = 0; i < (find_next(integer_names)); i++) 
    { 
     cout << integer_names[i] << " = " << integers[i] << endl; 
    } 
} 

void variables_integers::set_and_make_variable(string name, int value) 
{ 
    cout << name << " " << value << endl; 
    cout << find_next(integer_names) << endl; 
    integers[find_next(integer_names)] = value; 
    integer_names[find_next(integer_names)] = name; 
} 


//*** added code ****** 
bool operations_and_declerations(string parsed_input[3000], variables variable) 
{ 
    if (parsed_input[0] == "int") 
    { 
     if (parsed_input[2] == "=") 
     { 
      variable.integers.set_and_make_variable(parsed_input[1], atoi(parsed_input[3].c_str())); 
     } 
     return true; 
    } 
    else if (parsed_input[0] == "string") 
    { 
     return true; 
    } 
    //else if (parsed_input[0] ==) 
    else 
    { 
     return false; 
    } 
} 
+5

私はどんなエラーも表示されません。 [mcve]を投稿してください。 –

+0

クラスのメンバ関数を呼び出すために使用するコードはありますか?おそらく問題がありますか? –

+0

このコードをデバッガでステップオーバーしようとしましたか? – mvidelgauz

答えて

0

、あなたは値によって、あなたのvariablesパラメータを送りました。したがって、関数はローカルコピーを作成し、そのローカルコピーのみを変更しました。

問題を解決するには、パラメータを参照で送信します。関数名を次のように変更してください: bool operations_and_declerations(string parsed_input[3000], variables & variable)

+0

ありがとうございます!私はそれをやったと思った。時にはそれはちょうど新しい目のペアを取る。 –

関連する問題