Visual C++-Typedefs im Klassen-Designer
Typedef-Anweisungen erstellen eine oder mehrere Dereferenzierungsschichten zwischen einem Namen und seinem zugrunde liegenden Typ. Der Klassen-Designer unterstützt C++-Typedef-Typen, die mit dem typedef-Schlüsselwort deklariert werden, zum Beispiel:
typedef class coord
{
void P(x,y);
unsigned x;
unsigned y;
} COORD;
Mit diesem Typ können Sie dann eine Instanz deklarieren:
COORD OriginPoint;
Auch wenn Sie einen Typedef ohne einen Namen deklarieren können, wird der Klassen-Designer nicht den von Ihnen angegebenen Tagnamen, sondern den von der Klassenansicht generierten Namen verwenden. So ist beispielsweise die folgende Deklaration zwar zulässig, in der Klassenansicht und im Klassen-Designer wird sie jedoch als ein Objekt namens __unnamed angezeigt:
typedef class coord
{
void P(x,y);
unsigned x;
unsigned y;
};
Weitere Informationen zur Verwendung des typedef-Typs finden Sie unter typedef Specifier.
Eine C++-Typedef-Form hat die Form des in der Typedef angegebenen Typs. Wenn beispielsweise die Quelle typedef class deklariert, hat die Form abgerundete Ecken und die Bezeichnung Class. Bei typedef struct hat die Form quadratische Ecken und trägt die Bezeichnung Struct.
In Klassen und Strukturen können Typedefs geschachtelt deklariert sein. Daher können Klassen- und Strukturformen geschachtelte Typedef-Deklarationen als geschachtelte Formen anzeigen.
Typedef-Formen unterstützen die Befehle Als Assoziation anzeigen und Als Auflistungsassoziation anzeigen im Kontextmenü.
Nachfolgend sind einige Beispiele für Typdef-Typen aufgeführt, die vom Klassen-Designer unterstützt werden:
Codeelement |
Ansicht Klassen-Designer |
---|---|
typedef type name |
Name : Typ typedef Zieht eine Assoziationslinie zum Typ name (wenn möglich). |
typedef void (*func)(int) |
func: void (*)(int) typedef Typedef für Funktionszeiger. Es wird keine Assoziationslinie gezeichnet. Typedefs, deren Quelltyp ein Funktionszeiger ist, zeigt der Klassen-Designer nicht an. |
|
MyInt: int typedef A Klasse Zieht eine Assoziationslinie von der Quelltypform zu der Zieltypform. |
Class B {}; typedef B MyB; |
B Klasse MyB : B typedef Wenn Sie mit der rechten Maustaste auf eine Typedef-Form klicken, und dann auf Als Assoziation anzeigen klicken, wird die Typedef oder Klasse sowie eine Alias von-Zeile angezeigt, die die beiden Formen verbindet (wie eine Assoziationslinie). |
typedef B MyB; typedef MyB A; |
MyBar : Bar typedef Dasselbe wie oben. |
|
B Klasse MyB : B typedef A Klasse MyB ist eine geschachtelte Typedef-Form. |
#include <vector> ... using namespace std; ... typedef vector<int> MyIntVect; |
vector<T>Klasse MyIntVect : vector<int> typedef |
class B {}; typedef B MyB; class A : MyB {}; |
MyB : B typedef -> B B A Klasse -> MyB Das Anzeigen dieser Art von Beziehung über einen Kontextmenübefehl wird vom Klassen-Designer nicht unterstützt. |
#include <vector> Typedef MyIntVect std::vector<int>; Class MyVect : MyIntVect {}; |
std::vector<T> Klasse MyIntVect : std::vector<int> typedef MyVect Klasse -> MyIntVect |