Il faut recourir à une structure dans lunion :
class noms { char type; // 0 = occ, 1 = orient, 2 = américain. union { char nomoccident[2][15]; char nomorient[3][10]; struct { char nom[15]; char prenom[14]; char initiale; } nomamericain; }; public : // ... };
Observer que létiquette nomamericain
est ici obligatoire, comme on la dit dans le texte. Il va sans dire que la gestion dun tel ensemble nécessite quelques acrobaties étonnantes. Donnons quand même un exemple de méthode, une qui écrit le nom complet à lécran :
void noms::ecrire(void){ switch (type) { case 0: cout << nomoccident[1] << ' ' << nomoccident[0]; break; case 1: cout << nomorient[0] << ' ' << nomorient[1] << '-' << nomorient[2]; break; case 2: cout << nomamericain.prenom << ' ' << nomamericain.initiale << ". " << nomamericain.nom; }}