埋め込みオブジェクトの作成

埋め込みオブジェクトを使用してインスタンスを作成する場合は、次のタスクを実行します。

  • 埋め込みオブジェクトは、厳密に型指定されたオブジェクトまたは弱く型指定されたオブジェクトとして宣言する必要があります。

    厳密に型指定されたオブジェクトは、特定のクラスのオブジェクトをポイントし、そのクラス名を使用します。 弱く型指定されたオブジェクトは、特定されていないクラスのオブジェクトをポイントし、object キーワードを使用します。 両方のオブジェクトが 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;};
};

次の例では、厳密に型指定されたオブジェクトである 1 つのプロパティと、弱く型指定されたオブジェクトの配列である別のプロパティの初期化について説明します。

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