Share via


Creazione di oggetti incorporati

Quando si crea un'istanza con oggetti incorporati, eseguire le attività seguenti:

  • È necessario dichiarare un oggetto incorporato come fortemente tipizzato o tipizzato in modo debole.

    Un oggetto fortemente tipizzato punta a un oggetto di una classe specifica e usa il nome della classe. Un oggetto tipizzato in modo debole punta a un oggetto di una classe non specificata e usa la parola chiave object . Entrambi gli oggetti eseguono il mapping al tipo di VT_UNKNOWN .

  • È possibile usare NULL per il valore predefinito di oggetti e percorsi incorporati nelle inizializzazioni e nelle dichiarazioni.

  • Quando si incorpora un percorso oggetto, non inserire spazi vuoti tra gli elementi del percorso incorporato. Ad esempio, il percorso dell'oggetto "Class1Index=3;" non contiene spazi tra il nome della proprietà "Class1index" e il valore assegnato, ovvero "3".

La dichiarazione di classe seguente illustra come dichiarare oggetti incorporati fortemente tipizzati e tipizzati in modo debole.

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

Negli esempi seguenti viene descritto come dichiarare oggetti incorporati all'interno di una dichiarazione di classe.

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

Nell'esempio seguente viene descritta l'inizializzazione di una proprietà che è un oggetto fortemente tipizzato e un'altra proprietà che è una matrice di oggetti tipizzati in modo debole.

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