Partager via


Utilisation du code Visual C++ (Concepteur de classes)

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.

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

[!REMARQUE]

Ce n'est pas le même que le diagramme de classes UML, que vous pouvez créer dans un projet de modélisation.Pour plus d’informations, consultez Diagrammes de classes UML : référence.

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

Bb385735.collapse_all(fr-fr,VS.110).gifEmplacement 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 Class Designer is unable to display this type.Dans ce cas, faites glisser le code source modifié ou déplacé vers le diagramme de classes pour l'afficher à nouveau.

Bb385735.collapse_all(fr-fr,VS.110).gifProblè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 No types were found in the selection 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.

Bb385735.collapse_all(fr-fr,VS.110).gifProblè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 à l'aide de la boîte de dialogue Ajouter une référence.

  • 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é.

  • Le type n'existe pas (ou a été mis en commentaire).Pour corriger cette erreur, assurez-vous que vous n'avez pas commenté ou supprimé le type.

  • Le type se trouve dans une bibliothèque référencée par une directive #import.Une solution de contournement possible consiste à ajouter manuellement le code généré (le fichier .tlh) à une directive #include dans le fichier d'en-tête.

L'erreur que vous allez probablement voir pour un problème de résolution du type est Code could not be found for one or more shapes in class diagram '<element>'.Ce message d'erreur n'indique pas nécessairement que votre code est dans l'erreur.Il indique que le concepteur de classes n'a pas pu afficher votre code.Essayez les actions suivantes.

  • Assurez-vous que le type existe.Vérifiez que vous n'avez pas involontairement commenté ou n'avez pas supprimé code source.

  • Assurez -vous que le concepteur de classes prend en charge le type que vous avez entré.Consultez Limitations des éléments de code C++.

  • Essayez de résoudre le type.Le type peut être dans un projet ou un assembly qui n'est pas référencé 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 à l'aide de la boîte de dialogue Ajouter une référence.

  • Assurez -vous que le type est dans la portée correcte afin que le concepteur de classes peut la localisation.Vérifiez que le code ne manque pas using, imports, ou l'instruction d' #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é.

Bb385735.collapse_all(fr-fr,VS.110).gifDépannage d'autres messages d'erreur

Vous pouvez obtenir de l'aide concernant le dépannage des erreurs et des avertissements dans les forums publics de Microsoft Developer Network (MSDN).Consultez Forum du concepteur de classes de Visual Studio.

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

Tâches

Informations supplémentaires sur les erreurs du Concepteur de classes

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 des classes et d'autres types (Concepteur de classes)

Utilisation des diagrammes de classes (Concepteur de classes)

Conception des classes et des types (Concepteur de classes)