以数组形式访问所有对象元素

时间:2018-12-15 16:33:54

标签: c++

如果我创建了这样的课程:

struct test{
  int a;
  int b;
  string c;
};

并想遍历每个数据成员,就好像它是一个数组一样,我该怎么做?(假定成员的数量在将来的更新中可能会发生变化。)

1 个答案:

答案 0 :(得分:-1)

我立即注意到C ++不支持不同类型的元素数组,因此您的情况没有解决方案。但是使用相同的成员,您可以创建一个指向成员的指针数组,并在循环中使用它:

struct test {
   int a0 = 0;
   int a1 = 1;
   int a2 = 2;
   int a3 = 3;
   virtual ~test() {};
};

int main()
{
   test t;
   int* ptr[4] = { &t.a0, &t.a1, &t.a2, &t.a3 };
   for (int i = 0; i < sizeof(ptr) / sizeof(int*); i++)
      std::cout << *ptr[i] << std::endl;

   return 0;
}