Megosztás a következőn keresztül:


Beágyazott objektumok létrehozása

Beágyazott objektumokkal rendelkező példány létrehozásakor hajtsa végre a következő feladatokat:

  • A beágyazott objektumokat erősen vagy gyengén típusúként kell deklarálnia.

    Egy erősen gépelt objektum egy adott osztály objektumára mutat, és az osztály nevét használja. A gyengén típusú objektum egy meghatározatlan osztály objektumára mutat, és a objektum kulcsszót használja. Mindkét objektum a VT_UNKNOWN típusba tartozik.

  • Az inicializálásokban és deklarációkban a beágyazott objektumok és elérési utak alapértelmezett értékéhez használhatja a NULL.

  • Objektumútvonal beágyazásakor ne hagyjon közöket a beágyazott elérési út elemei között. A "Class1Index=3;" objektum elérési útja például nem tartalmaz szóközt a "Class1index" tulajdonságnév és a hozzárendelt érték között, ami "3".

Az alábbi osztálydeklaráció bemutatja, hogyan deklarálhat erősen beírt és gyengén gépelt beágyazott objektumokat.

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

Az alábbi példák bemutatják, hogyan deklarálhat beágyazott objektumokat egy osztálydeklaráción belül.

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;};
};

Az alábbi példa egy erősen beírt objektumot tartalmazó tulajdonság inicializálását, egy másik tulajdonságot pedig gyengén begépelt objektumok tömbjének inicializálását ismerteti.

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;}};
};