次の方法で共有


Implements 構造体

指定されたインターフェイスの QueryInterfaceGetIid を実装します。

構文

template <
    typename I0,
    typename I1 = Details::Nil,
    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 __declspec(novtable) Implements :
    Details::ImplementsHelper<
        RuntimeClassFlags<WinRt>,
        typename Details::InterfaceListHelper<
            I0, I1, I2, I3, I4, I5, I6, I7, I8, I9
        >::TypeT
    >,
    Details::ImplementsBase;

template <
    int flags,
    typename I0,
    typename I1,
    typename I2,
    typename I3,
    typename I4,
    typename I5,
    typename I6,
    typename I7,
    typename I8
>
struct __declspec(novtable) Implements<
        RuntimeClassFlags<flags>,
        I0, I1, I2, I3, I4, I5, I6, I7, I8> :
    Details::ImplementsHelper<
        RuntimeClassFlags<flags>,
        typename Details::InterfaceListHelper<
            I0, I1, I2, I3, I4, I5, I6, I7, I8
        >::TypeT
    >,
    Details::ImplementsBase;

パラメーター

I0
0 番目のインターフェイス ID です (必須)

I1
1 番目のインターフェイス ID です (省略可能)

I2
2 番目のインターフェイス ID です (省略可能)

I3
3 番目のインターフェイス ID です (省略可能)

I4
4 番目のインターフェイス ID です (省略可能)

I5
5 番目のインターフェイス ID です (省略可能)

I6
6 番目のインターフェイス ID です (省略可能)

I7
7 番目のインターフェイス ID です (省略可能)

I8
8 番目のインターフェイス ID です (省略可能)

I9
9 番目のインターフェイス ID です (省略可能)

flags
クラスの構成フラグ。 RuntimeClassFlags 構造体で指定された 1 つ以上の RuntimeClassType 列挙体。

解説

指定したインターフェイスの一覧から派生し、QueryInterfaceGetIid のヘルパー テンプレートを実装します。

I0 から I9 のインターフェイス パラメーターは IUnknownIInspectable、または ChainInterfaces テンプレートから派生する必要があります。 flags パラメーターは、IUnknown または IInspectable のサポートが生成されるかどうかを決定します。

メンバー

パブリック typedef

名前 説明
ClassFlags RuntimeClassFlags<WinRt> と同義。

保護メソッド

名前 説明
Implements::CanCastTo 指定したインターフェイスへのポインターを取得します。
Implements::CastToUnknown 基になる IUnknown インターフェイスへのポインターを取得します。
Implements::FillArrayWithIid 現在の 0 番目のテンプレート パラメーターで指定されたインターフェイス ID を、指定した配列要素に挿入します。

保護された定数

名前 説明
Implements::IidCount 実装されたインターフェイス ID の数を保持します。

継承階層

I0

ChainInterfaces

I0

ImplementsBase

ImplementsHelper

Implements

要件

ヘッダー: implements.h

名前空間: Microsoft::WRL

Implements::CanCastTo

指定したインターフェイスへのポインターを取得します。

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

パラメーター

riid
インターフェイス ID に対する参照。

ppv
成功した場合は、riid によって指定されるインターフェイスへのポインター。

戻り値

成功した場合は S_OK、そうでない場合はエラーを示す HRESULT (例: E_NOINTERFACE)。

解説

これは、QueryInterface 操作を実行する内部ヘルパー関数です。

Implements::CastToUnknown

基になる IUnknown インターフェイスへのポインターを取得します。

__forceinline IUnknown* CastToUnknown();

戻り値

この操作は常に成功し、IUnknown ポインターを返します。

解説

内部ヘルパー関数。

Implements::FillArrayWithIid

現在の 0 番目のテンプレート パラメーターで指定されたインターフェイス ID を、指定した配列要素に挿入します。

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

パラメーター

インデックス
この操作の開始配列要素を示す 0 から始まるインデックス。 この操作が完了すると、index は 1 ずつインクリメントされます。

iids
IID 型の配列。

解説

内部ヘルパー関数。

Implements::IidCount

実装されたインターフェイス ID の数を保持します。

static const unsigned long IidCount;