Arbeiten mit Visual C++-Code im Klassen-Designer
Aktualisiert: November 2007
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.
In früheren Versionen von Visual Studio wurden vom Klassen-Designer nur die verwalteten Sprachen (Visual C# und Visual Basic) unterstützt. In Visual Studio 2008 bietet der Klassen-Designer beschränkte Unterstützung für systemeigenen C++-Code (nur für Visualisierungs- und Dokumentationszwecke).
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
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 Zuordnungstyps). Sie könnten dann einen Fehler wie den folgenden erhalten: Dieser Typ kann im Klassen-Designer nicht angezeigt werden. 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 In der Auswahl wurden keine Typen gefunden 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 die Aktualisierung eines Klassendiagramms mit den Änderungen, die Sie im Code vorgenommen haben, fehlschlägt, 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 in Visual Studio (Visual Basic).
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. Stellen Sie außerdem sicher, dass Sie den Typ (oder einen zugehörigen Typ) nicht aus dem Namespace verschoben haben, in dem er sich ursprünglich befand. Weitere Informationen finden Sie unter Verweisen auf Namespaces und Komponenten.
Der Typ ist nicht vorhanden (oder wurde auskommentiert). Zum Beheben dieses Fehlers müssen Sie überprüfen, dass Sie den Typ nicht versehentlich auskommentiert oder gelöscht haben.
Der Fehler, der bei einem Typauflösungsproblem am häufigsten angezeigt wird, lautet Für mindestens eine Form im Klassendiagramm '<element>' wurde kein Code gefunden. Weitere Informationen finden Sie in der Beschreibung dieses Fehlers.
Problembehandlung bei bestimmten Fehlermeldungen
Weitere Informationen zur Problembehandlung bei bestimmten Fehlermeldungen finden Sie in den Fehlerthemen in Fehlermeldungen im Klassen-Designer.
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
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
Arbeiten mit Klassendiagrammen