Compartir a través de


Creación de objetos incrustados

Al crear una instancia con objetos incrustados, realice las tareas siguientes:

  • Debe declarar un objeto incrustado como fuertemente tipado o débilmente tipado.

    Un objeto fuertemente tipado apunta a un objeto de una clase específica y usa el nombre de la clase. Un objeto débilmente tipado apunta a un objeto de una clase no especificada y usa la palabra clave object. Ambos objetos se asignan al tipo VT_UNKNOWN.

  • Puede usar NULL para el valor predeterminado de objetos y rutas de acceso incrustados en inicializaciones y declaraciones.

  • Al incrustar una ruta de acceso de objeto, no coloque espacios en blanco entre los elementos de la ruta de acceso incrustada. Por ejemplo, la ruta de acceso de objeto "Class1Index=3;" no contiene ningún espacio entre el nombre de propiedad "Class1index" y el valor que se asigna, que es "3".

La siguiente declaración de clase muestra cómo declarar objetos incrustados fuertemente tipados y débilmente tipados.

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

En los ejemplos siguientes se describe cómo declarar objetos incrustados dentro de una declaración de clase.

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

En el ejemplo siguiente se describe la inicialización de una propiedad que es un objeto fuertemente tipado y otra propiedad que es una matriz de objetos débilmente tipados.

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