这是我的程序
struct All_Modules
{
char* Name;
};
All_Modules First_Array[] = { { "hi\n" } };
All_Modules Next_Array[] = { { "hi1\n" } };
All_Modules Other_Array[] = { { "hi2\n" } };
int main()
{
}
有没有办法获取All_Modules
所有数组名称的列表,如(First_Array
,...)并显示这样的打印?
My array is : First_Array | and The of This array is : hi
My array is : Next_Array | and The of This array is : hi1
My array is : Other_Array | and The of This array is : hi2
我知道我们可以设置每个数组来打印这个但我希望第一个系统获取All_Modules
中所有数组的列表并检测名称并自动打印Name
值...是否可能?
答案 0 :(得分:1)
是的,这是可能的,但你必须自己使用静态成员来实现它。
在All_Modules
的构造函数中,将新创建的实例附加到全局(静态)列表。
struct All_Modules{
char* Name;
All_Modules(){
gModulesList.push_back(this);
};
static void print_all(){
for(... gModulesList ...){
// print gModulesList[i]->Name;
}
};
private:
static std::list<All_Modules*> gModulesList;
};
答案 1 :(得分:0)
为了做到这一点,你必须枚举某些类型的全局变量,但是C ++并没有为它提供一种方法(它被称为内省,BTW)。虽然可能有一些特定于编译器的方法来获取该信息,但它们不会是可移植的。