Поделиться через


Создание внедренных объектов

При создании экземпляра с внедренными объектами выполните следующие задачи:

  • Внедренный объект необходимо объявить как строго типизированный или слабо типизированный.

    Строго типизированный объект указывает на объект определенного класса и использует имя класса. Слабо типизированный объект указывает на объект неопределенного класса и использует объект ключевое слово. Оба объекта сопоставляют с типом VT_UNKNOWN .

  • Значение NULL можно использовать для значения по умолчанию для внедренных объектов и путей в инициализациях и объявлениях.

  • При внедрении пути к объекту не размещайте пробелы между элементами внедренного пути. Например, путь к объекту "Class1Index=3;" не содержит пробела между именем свойства "Class1index" и присвоенным значением, которое равно "3".

В следующем объявлении класса показано, как объявить строго типизированные и слабо типизированные внедренные объекты.

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

В следующих примерах описывается объявление внедренных объектов в объявлении класса.

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

В следующем примере описывается инициализация одного свойства, который является строго типизированным объектом, и другого свойства, представляющее собой массив слабо типизированных объектов.

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