Arbeiten mit Visual C++-Code (Klassen-Designer)

Im Klassen-Designer wird eine visuelle Entwurfsoberfläche angezeigt, die als Klassendiagramm bezeichnet wird und eine visuelle Darstellung der in einem Projekt enthaltenen Codeelemente bietet. Mithilfe von Klassendiagrammen können Sie Klassen und andere Typen in einem Projekt entwerfen und visuell darstellen.

Der Klassen-Designer unterstützt die folgenden C++-Codeelemente:

  • Klasse (ähnlich einer verwalteten Klassenform, kann aber mehrere Vererbungsbeziehungen haben)

  • Anonyme Klasse (zeigt den von der Klassenansicht generierten Namen für den anonymen Typ an)

  • Vorlagenklasse

  • Struktur

  • Enum

  • Makro (zeigt die Ansicht des Makros nach der Verarbeitung an)

  • TypeDef

Hinweis

Dies ist nicht mit dem UML-Klassendiagramm, das Sie in einem Modellierungsprojekt erstellen können.Weitere Informationen finden Sie unter UML-Klassendiagramme: Referenz.

Problembehandlung bei Typauflösungs- und Anzeigeproblemen

Speicherort von Quelldateien

Der Klassen-Designer verfolgt nicht den Speicherort von Quelldateien. Deshalb kann der Klassen-Designer bei Änderungen in der Projektstruktur oder verschobenen Quelldateien in einem Projekt den Typ nicht mehr finden (insbesondere den Quelltyp eines TypeDef-, Basisklassen- oder Assoziationstyps). Sie könnten dann einen Fehler wie den folgenden erhalten: Class Designer is unable to display this type. Ziehen Sie in diesem Fall den geänderten oder verschobenen Quellcode wieder in das Klassendiagramm, um ihn erneut anzuzeigen.

Aktualisierungs- und Leistungsprobleme

Bei Visual C++-Projekten kann es zwischen 30 und 60 Sekunden dauern, bis eine Änderung in der Quelldatei im Klassendiagramm angezeigt wird. Diese Verzögerung kann auch bewirken, dass der Klassen-Designer den Fehler No types were found in the selection auslöst. Wenn Sie einen solchen Fehler erhalten, klicken Sie in der Fehlermeldung auf Abbrechen, und warten Sie, bis das Codeelement in der Klassenansicht angezeigt wird. Danach sollte der Klassen-Designer in der Lage sein, den Typ anzuzeigen.

Wenn bei der Aktualisierung eines Klassendiagramms mit den Änderungen, die Sie im Code vorgenommen haben, ein Fehler auftritt, sollten Sie das Diagramm schließen und wieder öffnen.

Probleme bei der Typauflösung

Beim Auflösen der Typen im Klassen-Designer kann es aus den folgenden Gründen zu Problemen kommen:

  • Der Typ befindet sich in einem Projekt oder einer Assembly, auf das bzw. die das Projekt, das das Klassendiagramm enthält, nicht verweist. Um diesen Fehler zu beheben, fügen Sie dem Projekt oder der Assembly, das bzw. die den Typ enthält, einen Verweis hinzu. Weitere Informationen finden Sie unter Gewusst wie: Hinzufügen oder Entfernen von Verweisen mithilfe des Dialogfelds "Verweise hinzufügen".

  • Der Typ befindet nicht im richtigen Bereich und kann daher vom Klassen-Designer nicht gefunden werden. Vergewissern Sie sich, dass im Code keine using-, imports- oder #include-Anweisung fehlt. Vergewissern Sie sich weiterhin, dass Sie den Typ (oder einen zugehörigen Typ) nicht aus dem Namespace verschoben haben, in dem er sich ursprünglich befand.

  • Der Typ ist nicht vorhanden (oder wurde auskommentiert). Zum Beheben dieses Fehlers müssen Sie sicherstellen, dass Sie den Typ nicht auskommentiert oder gelöscht haben.

  • Der Typ befindet sich in einer Bibliothek, auf die von einer #import-Direktive verwiesen wird. Eine mögliche Problemumgehung besteht darin, den generierten Code (die TLH-Datei) manuell einer #include-Direktive der Headerdatei hinzuzufügen.

Der Fehler, der bei einem Typauflösungsproblem am häufigsten angezeigt wird, lautet Code could not be found for one or more shapes in class diagram '<element>'. Diese Fehlermeldung bedeutet nicht unbedingt, dass der Code im Fehler ist. Sie gibt an, dass nur der Klassen-Designer nicht gefunden wurde, den Code anzuzeigen. Versuchen Sie die folgenden Measures.

  • Stellen Sie sicher, dass der Typ vorhanden ist. Stellen Sie sicher, dass Sie nicht versehentlich auskommentiert oder den Quellcode gelöscht haben.

  • Stellen Sie sicher, dass der Klassen-Designer den Typ unterstützt, den Sie eingegeben haben. Siehe Einschränkungen für C++-Codeelemente.

  • Versuchen Sie, den Typ zu beheben. Der Typ kann in einem Projekt oder einer Assembly, die nicht im Projekt verwiesen wird, das das Klassendiagramm enthält. Um diesen Fehler zu beheben, fügen Sie dem Projekt oder der Assembly, das bzw. die den Typ enthält, einen Verweis hinzu. Weitere Informationen finden Sie unter Gewusst wie: Hinzufügen oder Entfernen von Verweisen mithilfe des Dialogfelds "Verweise hinzufügen".

  • Stellen Sie sicher, dass der Typ im richtigen Bereich befindet, damit Klassen-Designer gefunden. Stellen Sie sicher, dass der Code nicht using, imports oder #include-Anweisung fehlt. Vergewissern Sie sich weiterhin, dass Sie den Typ (oder einen zugehörigen Typ) nicht aus dem Namespace verschoben haben, in dem er sich ursprünglich befand.

Problembehandlung anderer Fehlermeldungen

Hilfe bei der Problembehandlung für Fehler und Warnungen finden Sie in den öffentlichen Foren von MSDN (Microsoft Developer Network). Siehe Visual Studio-Klassen-Designer-Forum.

Einschränkungen für C++-Codeelemente

  • Wenn ein Visual C++-Projekt geladen ist, verwendet der Klassen-Designer einen Schreibschutz. Das heißt, Sie können das Klassendiagramm ändern, aber die im Klassendiagramm vorgenommenen Änderungen nicht wieder zurück in den Quellcode speichern.

  • Der Klassen-Designer unterstützt nur die systemeigene C++-Semantik. Bei Visual C++-Projekten, die in verwalteten Code kompiliert werden, visualisiert der Klassen-Designer nur Codeelemente systemeigenen Typs. Daher können Sie ein Klassendiagramm zwar zu einem Projekt hinzufügen, der Klassen-Designer wird jedoch keine Elemente visualisieren, in denen für die IsManaged-Eigenschaft der Wert true festgelegt ist (d. h. Werttypen und Referenztypen).

  • Bei Visual C++-Projekten liest der Klassen-Designer nur die Definition des Typs. Nehmen wir beispielsweise an, Sie definieren einen Typ in einer Headerdatei (.h) und dessen Member in einer Implementierungsdatei (.cpp). Wenn Sie für die Implementierungsdatei (.cpp) "Klassendiagramm anzeigen" aufrufen, wird im Klassen-Designer nichts angezeigt. Und wenn Sie "Klassendiagramm anzeigen" für eine .cpp-Datei aufrufen, die mit einer #include-Anweisung andere Dateien einbindet, aber keine eigentlichen Klassendefinitionen enthält, wird im Klassen-Designer erneut nichts angezeigt.

  • IDL-Dateien (.idl), in denen COM-Schnittstellen und Typbibliotheken definiert sind, werden in Diagrammen nur angezeigt, wenn sie in systemeigenem C++-Code kompiliert sind.

  • Globale Funktionen und Variablen werden vom Klassen-Designer nicht unterstützt.

  • Unions werden vom Klassen-Designer nicht unterstützt. Dabei handelt es sich um einen speziellen Klassentyp, bei dem der zugeordnete Speicherplatz nur so groß ist wie für das größte Datenmember der Union erforderlich.

  • Im Klassen-Designer werden keine elementaren Datentypen (wie int und char) angezeigt.

  • Im Klassen-Designer werden keine Typen angezeigt, die außerhalb des aktuellen Projekts definiert sind und auf die im Projekt nicht korrekt verwiesen wird.

  • Im Klassen-Designer werden geschachtelte Typen, jedoch nicht die Beziehungen zwischen einem geschachtelten Typ und anderen Typen angezeigt.

  • Der Klassen-Designer kann keine Typen anzeigen, die leer oder vom Typ "void" sind.

Siehe auch

Aufgaben

Zusätzliche Informationen zu Klassen-Designer-Fehlern

Konzepte

Visual C++-Klassen im Klassen-Designer

Visual C++-Strukturen im Klassen-Designer

Visual C++-Enumerationen im Klassen-Designer

Visual C++-Typedefs im Klassen-Designer

Weitere Ressourcen

Entwerfen und Anzeigen von Klassen und Typen

Arbeiten mit Klassen und anderen Typen (Klassen-Designer)

Arbeiten mit Klassendiagrammen (Klassen-Designer)

Entwerfen von Klassen und Typen (Klassen-Designer)