首页 > 解决方案 > 以数组形式访问所有对象元素

问题描述

如果我创建了这样的类:

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

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

标签: c++

解决方案


立即,我注意到 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;
}

推荐阅读