我想用所有结构对象调用一个函数。
我需要一个函数,它可以通过仅调用结构 STRUCT_A 来循环遍历结构对象 A_1、A_2。代码底部的空函数“reset_all_structs(???)”。
示例代码:
#include <iostream>
struct STRUCT_A {
unsigned char number = 0;
bool bool_1 = 0;
bool bool_2 = 0;
} A_1, A_2; // Objects: maybe later A_3, ... , A_x
void print_to_terminal(STRUCT_A &STRUCT_NAME);
void set_bool_1(STRUCT_A &STRUCT_NAME);
void set_bool_2(STRUCT_A &STRUCT_NAME);
void reset_one_struct(STRUCT_A &STRUCT_NAME);
void reset_all_structs();
int main()
{
set_bool_1(A_1);
A_1.number = 111;
set_bool_2(A_2);
A_2.number = 222;
std::cout << "A_1:\n";
print_to_terminal(A_1);
std::cout << "\n";
std::cout << "A_2:\n";
print_to_terminal(A_2);
std::cout << "\n";
reset_one_struct(A_1); // <-- Reset one struct works, my question ist how to reset all structs with the type STRUCT_A?
std::cout << "A_1:\n";
print_to_terminal(A_1);
std::cout << "\n";
set_bool_2(A_1);
A_1.number = 234;
std::cout << "A_1:\n";
print_to_terminal(A_1);
std::cout << "\n";
// Here the question. ???
// reset_all_structs( STRUCT_A );
// I want to reset both A_1 and A_2 by calling the function reset_all_structs with all object of the struct "STRUCT_A" and loop through these. Is this possible
// I don't want to call a function like reset_all_struct(A_1, A_2) because later I will add more objects of struct STRUCT_A.
std::cout << "Reset A_1 and A_2\n";
std::cout << "A_1:\n";
print_to_terminal(A_1);
std::cout << "\n";
std::cout << "A_2:\n";
print_to_terminal(A_2);
std::cout << "\n";
return 0;
}
void print_to_terminal(STRUCT_A &STRUCT_NAME){
std::cout << "Number: " << (int)STRUCT_NAME.number << "\n";
std::cout << "bool_1: " << (int)STRUCT_NAME.bool_1 << "\n";
std::cout << "bool_2: " << (int)STRUCT_NAME.bool_2 << "\n";
return;
};
void set_bool_1(STRUCT_A &STRUCT_NAME){
STRUCT_NAME.bool_1 = 1;
STRUCT_NAME.bool_2 = 0;
return;
};
void set_bool_2(STRUCT_A &STRUCT_NAME){
STRUCT_NAME.bool_1 = 0;
STRUCT_NAME.bool_2 = 1;
return;
};
void reset_one_struct(STRUCT_A &STRUCT_NAME){
STRUCT_NAME.number = 0;
STRUCT_NAME.bool_1 = 0;
STRUCT_NAME.bool_2 = 0;
return;
};
void reset_all_structs( ??? ){
// loop through all structs
return;
};