1

假设我有一堂课

class A {
  char a[15], b[11],c[17];
public:
  void names();

}
void A :: names() {
   char x[20];
   x=a;
   cout<<x;
   x=b;
   cout<<x;
   x=c;
   cout<<x;
} 

我想从 A 的每个成员一个一个地复制 x 中的数据,并使用 for 循环来表示成员名称。有没有办法可以存储它们?所以像 -

    void A :: names() {
           char x[20];
           while(all members of A not traversed){
                 x=current member;
                 cout<<x;
                 update member;
          }
    }
4

2 回答 2

1

听起来你想遍历一个类的成员。喜欢

for (variable in a's members) {
    a.x append variable's value
}

没有简单的方法可以遍历类的成员。您应该使用 amap代替,它提供键之间的迭代功能。

for (auto const& x : the_map) {
    x.first  // name or key
    x.second // value
}
于 2017-03-21T04:40:18.167 回答
0

在 C++ 中执行此操作的惯用方法是通过指针。

class A {
  char a[15], b[11],c[17];
  char *members[3] = {a, b, c}; // valid only for c++11 or above
public:
  void names();
};

void A::names() {
    for (char *x: members) {  // c++11 range loop...
        cout << x << endl;
    }
}

但是,除非您有充分的理由使用原始字符数组,否则std::string通常使用起来更简单......

于 2017-03-21T14:37:40.383 回答