次の方法で共有


default (C++)

コクラスで定義されたカスタムまたはディスパッチ インターフェイスが、既定のプログラム可能なインターフェイスを表すことを示します。

[ default(
      interface1,
   interface2
) ]

パラメータ

  • interface1
    属性 default で定義されたクラスに基づいてオブジェクトを作成する、スクリプト環境で使用できる既定のインターフェイス。

    既定のインターフェイスを指定しない場合は、最初に出現するソース以外のインターフェイスが既定のインターフェイスとして使用されます。

  • interface2 (省略可能)
    既定のソース インターフェイス。このインターフェイスの指定にも属性 source を使う必要があります。

    既定のソース インターフェイスを指定しない場合は、最初のソース インターフェイスが既定のインターフェイスとして使用されます。

解説

C++ 属性 default の機能は、Microsoft インターフェイス定義言語 (MIDL: Microsoft Interface Definition Language) 属性 default と同じです。属性 default は属性 case と一緒に使用されます。

使用例

既定のプログラム可能なインターフェイスとして ICustomDispatch を指定するための、coclass の定義での default の使用例を次のコードに示します。

// cpp_attr_ref_default.cpp
// compile with: /LD
#include "windows.h"
[module(name="MyLibrary")];

[object, uuid("9E66A290-4365-11D2-A997-00C04FA37DDB")]
__interface ICustom {
   HRESULT Custom([in] long l, [out, retval] long *pLong);
};

[dual, uuid("9E66A291-4365-11D2-A997-00C04FA37DDB")] 
__interface IDual {
   HRESULT Dual([in] long l, [out, retval] long *pLong);
};

[object, uuid("9E66A293-4365-11D2-A997-00C04FA37DDB")]
__interface ICustomDispatch : public IDispatch {
   HRESULT Dispatch([in] long l, [out, retval] long *pLong);
};

[   coclass,
   default(ICustomDispatch), 
   source(IDual),
   uuid("9E66A294-4365-11D2-A997-00C04FA37DDB")
]
class CClass : public ICustom, public IDual, public ICustomDispatch {
   HRESULT Custom(long l, long *pLong) { return(S_OK); }
   HRESULT Dual(long l, long *pLong) { return(S_OK); }
   HRESULT Dispatch(long l, long *pLong) { return(S_OK); }
};

int main() {
#if 0 // Can't instantiate without implementations of IUnknown/IDispatch
   CClass *pClass = new CClass;

   long llong;

   pClass->custom(1, &llong);
   pClass->dual(1, &llong);
   pClass->dispinterface(1, &llong);
   pClass->dispatch(1, &llong);

   delete pClass;
#endif
   return(0);
}

default の使用例については、「source」も参照してください。

必要条件

属性コンテキスト

対象

class、struct、データ メンバ

複数回の適用

不可

必要な属性

coclass (class または struct に適用する場合)

無効な属性

なし

詳細については、「属性コンテキスト」を参照してください。

参照

概念

IDL 属性

クラス属性

coclass

ATL サンプル