次の方法で共有


ChainInterfaces 構造体

一連のインターフェイス ID に適用できる検証および初期化関数を指定します。

構文

template <
    typename I0,
    typename I1,
    typename I2 = Details::Nil,
    typename I3 = Details::Nil,
    typename I4 = Details::Nil,
    typename I5 = Details::Nil,
    typename I6 = Details::Nil,
    typename I7 = Details::Nil,
    typename I8 = Details::Nil,
    typename I9 = Details::Nil
>
struct ChainInterfaces : I0;

template <
    typename DerivedType,
    typename BaseType,
    bool hasImplements,
    typename I1,
    typename I2,
    typename I3,
    typename I4,
    typename I5,
    typename I6,
    typename I7,
    typename I8,
    typename I9
>
struct ChainInterfaces<
    MixIn<
        DerivedType,
        BaseType,
        hasImplements
    >, I1, I2, I3, I4, I5, I6, I7, I8, I9
>;

パラメーター

I0
(必須) インターフェイス ID 0。

I1
(必須) インターフェイス ID 1。

I2
(省略可能) インターフェイス ID 2。

I3
(省略可能) インターフェイス ID 3。

I4
(省略可能) インターフェイス ID 4。

I5
(省略可能) インターフェイス ID 5。

I6
(省略可能) インターフェイス ID 6。

I7
(省略可能) インターフェイス ID 7。

I8
(省略可能) インターフェイス ID 8。

I9
(省略可能) インターフェイス ID 9。

DerivedType
派生型。

BaseType
派生型の基本データ型。

hasImplements
true場合、Implements 構造体から派生しないクラスで MixIn 構造体を使用できないことを意味するブール値。

メンバー

保護メソッド

名前 説明
ChainInterfaces::CanCastTo 指定したインターフェイス ID を ChainInterface テンプレート パラメーターで定義された各特殊化にキャストできるかどうかを示します。
ChainInterfaces::CastToUnknown I0 テンプレート パラメーターで定義された型のインターフェイス ポインターを IUnknown へのポインターにキャストします。
ChainInterfaces::FillArrayWithIid I0 テンプレート パラメーターで定義されたインターフェイス ID をインターフェイス ID の指定した配列の指定した位置に格納します。
ChainInterfaces::Verify テンプレート パラメーター I0 から I9 で定義された各インターフェイスが、IUnknownIInspectable、またはその両方を継承していることと、I0I1 から I9 を継承していることを確認します。

保護された定数

名前 説明
ChainInterfaces::IidCount テンプレート パラメーター I0 から I9 で指定したインターフェイスに含まれるインターフェイス ID の合計数。

継承階層

I0

ChainInterfaces

要件

ヘッダー: implements.h

名前空間: Microsoft::WRL

ChainInterfaces::CanCastTo

指定したインターフェイス ID を既定値以外のテンプレート パラメーターで定義された各特殊化にキャストできるかどうかを示します。

__forceinline bool CanCastTo(
   REFIID riid,
   _Deref_out_ void **ppv
);

パラメーター

riid
インターフェイス ID。

ppv
最後にキャストに成功したインターフェイス ID へのポインター。

戻り値

すべてのキャスト操作に成功した場合は true、それ以外の場合は false

ChainInterfaces::CastToUnknown

I0 テンプレート パラメーターで定義された型のインターフェイス ポインターを IUnknown へのポインターにキャストします。

__forceinline IUnknown* CastToUnknown();

戻り値

IUnknown を指すポインターです。

ChainInterfaces::FillArrayWithIid

I0 テンプレート パラメーターで定義されたインターフェイス ID をインターフェイス ID の指定した配列の指定した位置に格納します。

__forceinline static void FillArrayWithIid(
   _Inout_ unsigned long &index,
   _In_ IID* iids
);

パラメーター

インデックス
iids 配列へのインデックス値へのポインター。

iids
インターフェイス ID の配列。

ChainInterfaces::IidCount

テンプレート パラメーター I0 から I9 で指定したインターフェイスに含まれるインターフェイス ID の合計数。

static const unsigned long IidCount = Details::InterfaceTraits<I0>::IidCount + Details::InterfaceTraits<I1>::IidCount + Details::InterfaceTraits<I2>::IidCount + Details::InterfaceTraits<I3>::IidCount + Details::InterfaceTraits<I4>::IidCount + Details::InterfaceTraits<I5>::IidCount + Details::InterfaceTraits<I6>::IidCount + Details::InterfaceTraits<I7>::IidCount + Details::InterfaceTraits<I8>::IidCount + Details::InterfaceTraits<I9>::IidCount;

戻り値

インターフェイス ID の合計数。

解説

テンプレート パラメーター I0I1 は必須です。パラメーター I2 から I9 は省略可能です。 通常、各インターフェイスの IID カウントは 1 です。

ChainInterfaces::Verify

テンプレート パラメーター I0 から I9 で定義された各インターフェイスが、IUnknownIInspectable、またはその両方を継承していることと、I0I1 から I9 を継承していることを確認します。

WRL_NOTHROW __forceinline static void Verify();

解説

検証操作に失敗した場合は、static_assert から失敗を説明するエラー メッセージが出力されます。

テンプレート パラメーター I0I1 は必須です。パラメーター I2 から I9 は省略可能です。