2017-03-21 2 views
1

Supposons que j'ai une classe commeUtiliser un tableau pour stocker uniquement les noms des membres de données d'une classe en C++

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; 
} 

Je veux copier des données dans x de chaque membre d'un un par un et de l'utilisation une boucle for pour représenter les noms des membres. Y a-t-il un moyen de les stocker? Donc, quelque chose comme -

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

Pouvez-vous préciser ce que vous voulez? La question n'est pas claire. –

+0

@Svaberg Merci pour le lien –

+0

@Joseph Thomas Je vais mettre à jour ma question, pour clarifier. S'il vous plaît faire référence. –

Répondre

1

Cela ressemble à ce que vous voulez parcourir par les membres d'une classe. Comme

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

Il n'y a pas de méthodes triviales pour parcourir les membres d'une classe. Vous devez plutôt utiliser un map, qui fournit des fonctionnalités d'itération parmi les clés.

for (auto const& x : the_map) { 
    x.first // name or key 
    x.second // value 
} 
+0

Oui, je veux itérer à travers les membres d'une classe. Je vais essayer une carte. Merci –

0

La manière idiomatique de faire cela en C++ est à travers des pointeurs.

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; 
    } 
} 

Mais, sauf si vous avez de bonnes raisons d'utiliser des tableaux char brut, std::string est généralement plus simple à utiliser ...

+0

Je suis très peu familier avec les pointeurs, c'est pourquoi je suis allé avec des tableaux char. Je vais essayer votre suggestion si! Merci. –

+0

@TanishaShrotriya: vous ne pouvez pas affecter à un tableau, c'est pourquoi j'utilise des pointeurs ici. Attention: les tableaux et les pointeurs sont des animaux différents et vous ne devriez pas utiliser l'un pour l'autre ... –

+0

Haha. J'ai essayé const char * au lieu de char *. Je pense que c'est là que j'ai erré. –