Utilisation du code Visual C++ dans le Concepteur de classes

Mise à jour : novembre 2007

Le Concepteur de classes affiche une aire de conception visuelle appelée un diagramme de classes, qui fournit une représentation visuelle des éléments de code dans votre projet. Vous pouvez utiliser des diagrammes de classes pour concevoir et visualiser des classes et d'autres types dans un projet.

Dans les versions antérieures de Visual Studio, le Concepteur de classes ne prenait en charge que les langages managés (Visual C# et Visual Basic). Dans Visual Studio 2008, le Concepteur de classes ajoute une prise en charge limitée pour le code C++ natif, qui est conçue uniquement à des fins de visualisation et de documentation.

Le Concepteur de classes prend en charge les éléments de code C++ suivants :

  • Classe (ressemble à une forme de classe managée, mais il peut avoir des relations d'héritage multiple)

  • Classe anonyme (affiche le nom généré de l'Affichage de classes pour le type anonyme)

  • Classe de modèle

  • Struct

  • Enum

  • Macro (affiche l'affichage post-traité de la macro)

  • Typedef

Résolution des problèmes de résolution de type et d'affichage

Emplacement de fichiers sources

Le Concepteur de classes n'effectue pas un suivi de l'emplacement des fichiers sources. Par conséquent, si vous modifiez votre structure de projet ou si vous déplacez des fichiers sources dans votre projet, le Concepteur de classes peut perdre la trace du type (surtout le type de source d'un typedef, de classes de base ou de types d'associations). Vous pouvez recevoir une erreur telle que Le Concepteur de classes ne peut pas afficher ce type. Dans ce cas, faites glisser le code source modifié ou déplacé vers le diagramme de classes pour l'afficher à nouveau.

Problèmes de mise à jour et de performances

Pour les projets Visual C++, la modification dans le fichier source peut prendre 30 à 60 secondes avant d'apparaître dans le diagramme de classes. Ce délai peut entraîner la génération de l'erreur Aucun type n'a été trouvé dans la sélection par le Concepteur de classes. Si vous obtenez une telle erreur, cliquez sur Annuler dans le message d'erreur et attendez que l'élément de code apparaisse dans l'Affichage de classes. Le Concepteur de classes devrait ensuite être en mesure d'afficher le type.

En cas d'échec de la mise à jour d'un diagramme de classes suite à la modification du code, il peut s'avérer nécessaire de fermer le diagramme puis de le rouvrir.

Problèmes de la résolution des types

Le Concepteur de classes peut ne pas être en mesure de résoudre des types pour les raisons suivantes :

  • Le type se trouve dans un projet ou un assembly non référencé à partir du projet qui contient le diagramme de classes. Pour corriger cette erreur, ajoutez une référence au projet ou à l'assembly qui contient le type. Pour plus d'informations, consultez Comment : ajouter ou supprimer des références dans Visual Studio (Visual Basic).

  • Le type ne se trouve pas dans la portée correcte ; le Concepteur de classes ne peut donc pas le localiser. Vérifiez que le code ne manque pas une instruction usingimportsou #include. Assurez-vous également que vous n'avez pas déplacé le type (ou un type connexe) hors de l'espace de noms dans lequel il a été initialement localisé. Pour plus d'informations, consultez Références aux espaces de noms et aux composants.

  • Le type n'existe pas (ou a été mis en commentaire). Pour corriger cette erreur, vérifiez que vous n'avez pas supprimé le type ou que vous ne l'avez pas mis en commentaire par inadvertance.

L'erreur que vous allez probablement voir pour un problème de résolution du type est Code est introuvable pour une ou plusieurs formes dans le diagramme de classes '<élément>'. Consultez la description de cette erreur pour plus d'informations.

Résolution des messages d'erreur spécifiques

Pour plus d'informations sur la résolution des messages d'erreur spécifiques, consultez les rubriques d'erreur dans Messages d'erreur du concepteur de classes.

Limitations pour les éléments de code C++

  • Lorsqu'un projet Visual C++ est chargé, le Concepteur de classes fonctionne en lecture seule. Vous pouvez modifier le diagramme de classes, mais vous ne pouvez pas réenregistrer les modifications du diagramme de classes sur le code source.

  • Le Concepteur de classes prend en charge uniquement la sémantique C++ native. Pour les projets Visual C++ compilés dans le code managé, le Concepteur de classes visualise seulement des éléments de code qui sont des types natifs. Par conséquent, vous pouvez ajouter un diagramme de classes à un projet, mais le Concepteur de classes ne vous permet pas de visualiser des éléments dans lesquels la propriété IsManaged a la valeur true (autrement dit, types valeur et types référence).

  • Pour les projets Visual C++, le Concepteur de classes lit uniquement la définition du type. Par exemple, supposons que vous définissez un type dans un fichier d'en-tête (.h) et que vous définissez ses membres dans un fichier d'implémentation (.cpp). Si vous appelez "Afficher le Diagramme de classes" sur le fichier d'implémentation (.cpp), le Concepteur de classes n'affiche rien. Autre exemple, si vous appelez "Afficher le Diagramme de classes" sur un fichier .cpp qui utilise une instruction #include pour inclure d'autres fichiers, mais qui ne contient pas de définitions de classe réelles, le Concepteur de classes n'affichage toujours rien.

  • Les fichiers IDL (.idl) qui définissent des interfaces COM et des bibliothèques de types ne s'affichent pas dans les diagrammes, sauf s'ils sont compilés en code C++ natif.

  • Le Concepteur de classes ne prend pas en charge les fonctions et variables globales.

  • Le Concepteur de classes ne prend pas en charge les unions. C'est un type spécial de classe dans laquelle la mémoire allouée est uniquement suffisante pour la plus grande donnée membre de l'union.

  • Le Concepteur de classes n'affiche pas de types de données de base tels qu' int et char.

  • Le Concepteur de classes n'affiche pas les types qui sont définis en dehors du projet actuel si le projet n'a pas de références correctes à ces types.

  • Le Concepteur de classes peut afficher les types imbriqués, mais pas les relations entre un type imbriqué et d'autres types.

  • Le Concepteur de classes ne peut pas afficher les types void ou dérivés d'un type void.

Voir aussi

Concepts

Classes de Visual C++ dans le concepteur de classes

Structures de Visual C++ dans le Concepteur de classes

Énumérations de Visual C++ dans le concepteur de classes

Typedefs de Visual C++ dans le Concepteur de classes

Autres ressources

Conception et affichage des classes et des types

Utilisation de classes et d'autres types

Utilisation de diagrammes de classes

Conception de classes et types

Messages d'erreur du concepteur de classes