Share via


Erstellen von eingebetteten Objekten

Führen Sie beim Erstellen eines Instanz mit eingebetteten Objekten die folgenden Aufgaben aus:

  • Sie müssen ein eingebettetes Objekt als stark oder schwach typisiert deklarieren.

    Ein stark typisiertes Objekt zeigt auf ein Objekt einer bestimmten Klasse und verwendet den Klassennamen. Ein schwach typisiertes Objekt zeigt auf ein Objekt einer nicht angegebenen Klasse und verwendet das Schlüsselwort object. Beide Objekte lassen sich dem Typ VT_UNKNOWN zuordnen.

  • Sie können in Initialisierungen und Deklarationen NULL als Standardwert von eingebetteten Objekten und Pfaden verwenden.

  • Beim Einbetten eines Objektpfads darf kein Leerraum zwischen den Elementen des eingebetteten Pfads vorhanden sein. Beispielsweise enthält der Objektpfad „Class1Index=3;“ keinen Leerraum zwischen dem Eigenschaftennamen „Class1Index“ und dem zugewiesenen Wert „3“.

Die folgende Klassendeklaration zeigt, wie Sie stark typisierte und schwach typisierte eingebettete Objekte deklarieren.

Class MyClass
{
    EmbedClass    Object1;          // Strongly typed
    object        Object2;          // Weakly typed
};

Die folgenden Beispiele zeigen, wie Sie eingebettete Objekte innerhalb einer Klassendeklaration deklarieren.

Class Class1 
{ 
     [key] sint32 Class1Index;
};

Class Class2 
{
    [key] sint32 Class2Index;
    Class1 EmbedObject1 = instance of Class1{Class1Index=3;};
};

Class Class3
{
    [key] sint32 Class3Index;
    Class2 EmbedObject2 = instance of Class2 {Class2Index=4;};
};

Das folgende Beispiel zeigt die Initialisierung einer Eigenschaft, die ein stark typisiertes Objekt ist, und einer anderen Eigenschaft, die ein Array aus schwach typisierten Objekten ist.

Class EmbedClass1
{
    [key] sint32 intval;
};

Class EmbedClass2
{
    [key] string sval;
};

Class ContainerClass
{
    [key] sint32 intval;
    EmbedClass1 SingleObject;
    Object ArrayObject[];
};

Instance of ContainerClass
{
    intval = 33;
    SingleObject = instance of EmbedClass1 {intval=99;};
    ArrayObject = {instance of EmbedClass2 {sval="something";},
                   instance of EmbedClass1 {intval=100;}};
};