Solution de l’exercice 6.9

Il faut recourir à une structure dans l’union :

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 l’a dit dans le texte. Il va sans dire que la gestion d’un 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;     }}

Retour au texte.