Création d’objets incorporés

Lorsque vous créez une instance avec des objets incorporés, effectuez les tâches suivantes :

  • Vous devez déclarer un objet incorporé comme fortement typé ou faiblement typé.

    Un objet fortement typé pointe vers un objet d’une classe spécifique et utilise le nom de la classe. Un objet faiblement typé pointe vers un objet d’une classe non spécifiée et utilise le mot clé object . Les deux objets sont mappés au type VT_UNKNOWN.

  • Vous pouvez utiliser NULL pour la valeur par défaut des objets incorporés et des chemins d’accès dans les initialisations et les déclarations.

  • Lors de l’incorporation d’un chemin d’accès d’objet, ne placez pas d’espace entre les éléments du chemin incorporé. Par exemple, le chemin d’accès de l’objet « Class1Index=3; » ne contient aucun espace entre le nom de propriété « Class1index » et la valeur affectée, qui est « 3 ».

La déclaration de classe suivante vous montre comment déclarer des objets incorporés fortement typés et faiblement typés.

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

Les exemples suivants décrivent comment déclarer des objets incorporés dans une déclaration de 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;};
};

L’exemple suivant décrit l’initialisation d’une propriété qui est un objet fortement typé et d’une autre propriété qui est un tableau d’objets faiblement typés.

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