c++ - 以数组形式访问所有对象元素
问题描述
如果我创建了这样的类:
struct test{
int a;
int b;
string 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;
}
推荐阅读
- query-performance - 不相关的查询不应该在 not in 语句中只执行一次吗?
- jpa - JPA规范使用Entitry的minversion
- ruby-on-rails - 如何为 Rails + Rspec + Capybara & Selenium Webdrivers 为多域应用程序设置 Github CI?
- reactjs - 无法在 goormIDE 中启动 npm
- reactjs - 如何在 react-calendar-timeline 中添加自定义弹出框
- python-3.x - Python 脚本 (.py) 未通过 Python.Exe 运行
- java - GPG 签名的替代方案在 maven Central 中发布 JAR
- angular - 如何在 Angular Material Table 中将嵌套数组显示为行?
- google-chrome - 无法在 Ubuntu 桌面上使用 Chromium 的无头模式使用 --screenshot 或 --print-to-pdf
- oracle - VARRAY 用户定义的 element_type