Utilisation de typedef avec les types de classe

L'utilisation du spécificateur typedef avec des types de classe est prise en charge principalement en raison de la pratique C ANSI en matière de déclaration des structures sans nom dans les déclarations typedef. Par exemple, de nombreux programmeurs en langage C utilisent ce qui suit :

// typedef_with_class_types1.cpp
// compile with: /c
typedef struct {   // Declare an unnamed structure and give it the
                   // typedef name POINT.
   unsigned x;
   unsigned y;
} POINT;

L'avantage de ce type de déclaration est qu'il permet des déclarations telles que :

POINT ptOrigin;

plutôt que :

struct point_t ptOrigin;

En C++, la différence entre les noms typedef et les types réels (déclarés avec les mots clés class, struct, union et enum ) est plus distincte. Bien que la pratique C consistant à déclarer une structure sans nom dans une instruction typedef fonctionne toujours, elle ne fournit aucun avantage significatif en matière de notation.

// typedef_with_class_types2.cpp
// compile with: /c /W1
typedef struct {
   int POINT();
   unsigned x;
   unsigned y;
} POINT;

L'exemple précédent déclare une classe nommée POINT à l'aide de la syntaxe de classe sans nom typedef. POINT est considérée comme un nom de classe. Toutefois, les restrictions suivantes s'appliquent aux noms introduits de cette façon :

  • Le nom (synonyme) ne peut pas apparaître après un préfixe classe, struct ou union.

  • Le nom ne peut pas être utilisé en tant que nom de constructeur ou de destructeur dans une déclaration de classe.

En résumé, cette syntaxe ne fournit pas de mécanisme pour l'héritage, la construction ou la destruction.

Voir aussi

Référence

typedef, spécificateur