Wenn ich die Objektfunktion set_and_make_variable
verwende, sende ich ihm einen Namen und einen Wert, die beide korrekt funktionieren. Aber dann, wenn ich gehe zu zeigen current_variables
es verhält sich wie ich nie die Werte für beide integers
und integers_names
. Ich dachte, Sie könnten die Variablenarrays von den Funktionen, die der Klasse zugeordnet sind, ohne Referenzen oder Zeiger ändern.
Bin ich nicht richtig?Kann Arrays nicht erhalten, um Wert in Klasse zu halten
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;
}
}
Ich sehe keine Fehler, die herausspringen. Bitte poste ein [mcve]. –
Welches ist der Code, den Sie verwenden, um die Member-Funktionen der Klasse aufzurufen? Vielleicht liegt das Problem dort –
haben Sie versucht, mit Debugger über diesen Code zu gehen? – mvidelgauz