winrt::d elegate 结构模板(C++/WinRT)

可用于为自己的事件声明自定义委托类型的类型。 delegate supports any number of parameters, and they are not limited to Windows Runtime types.

The delegate type has no ABI (it has no interface for use across application binaries), so its use case is when you're both authoring and consuming an event within the same project. 有关该方案的更多详细信息,请参阅 项目中的参数化委托、简单信号和回调

有关处理事件和代码示例的详细信息,请参阅 在 C++/WinRT 中使用委托处理事件

Syntax

template <typename... T>
struct delegate : Windows::Foundation::IUnknown

Template parameters

typename... T 一个可变模板参数包,其中包含调用委托时传递的参数的类型。

Requirements

支持的最低 SDK: Windows SDK 版本 10.0.17134.0(Windows 10 版本 1803)

Namespace: winrt

Header: %WindowsSdkDir%Include<WindowsTargetPlatformVersion>\cppwinrt\winrt\base.h (included by default)

Constructors

Constructor Description
delegate::delegate constructor Initializes a new instance of the delegate struct from the input data.

Member operators

Operator Description
delegate::operator() (函数调用运算符) Invokes the delegate represented by the delegate object with the provided arguments.

delegate::delegate constructor

Initializes a new instance of the delegate struct from the input data.

Syntax

delegate(std::nullptr_t = nullptr) noexcept; // (1)

template <typename L>
delegate(L lHandler); // (2)

template <typename F>
delegate(F* fHandler); // (3)

template <typename O, typename M>
delegate(O* object, M method); // (4)

template <typename O, typename M>
delegate(winrt::com_ptr<O>&& object, M method); // (5)

template <typename O, typename M>
delegate(winrt::weak_ref<O>&& object, M method); // (6)

template <typename O, typename M>
delegate(winrt::weak_ref<O>&& object, L lHandler); // (7)

template <typename O, typename M>
delegate(std::shared_ptr<O>&& object, M method); // (8)

template <typename O, typename M>
delegate(std::weak_ptr<O>&& object, M method); // (9)

template <typename O, typename M>
delegate(std::weak_ptr<O>&& object, L lHandler); // (10)

Template parameters

typename L lambda 类型,或者更普遍地支持函数调用语法的任何类型,例如 std::function

typename F 免费函数类型。

typename O 对象类型。

typename M 指针到成员函数类型。

Parameters

lHandler lambda 对象(或更通常)支持函数调用语法的对象,例如将处理事件的一个 std::function对象。

fHandler 一个指针到自由函数,用于处理事件。

object 一个对象,其成员函数之一将处理该事件。 根据重载,此对象可能由原始指针或智能指针表示。

method 一个指针到成员函数,用于处理事件。

Remarks

默认构造函数 (1) 构造空委托。

构造函数 (2) 构造一个委托,该委托使用委托参数调用 lambda。

构造函数 (3) 构造一个委托,该委托使用委托参数调用函数。

构造函数 (4) 构造一个委托,该委托使用委托参数调用指向对象的方法。

构造函数 (5) 构造一个委托,该委托使用委托参数调用引用的对象的方法。

构造函数 (6) 构造尝试解析为强引用的 weak_ref 委托。 如果成功,则它使用委托参数调用对象的方法;否则,它不执行任何作。

构造函数 (7) 构造尝试解析为强引用的 weak_ref 委托。 如果成功,则调用具有委托参数的 lambda;否则,它不执行任何作。 需要 C++/WinRT 版本 2.0.240111.5。

构造函数 (8) 构造一个委托,该委托使用委托参数调用共享对象的方法。 需要 C++/WinRT 版本 2.0.240111.5。

构造函数 (9) 构造一个委托,该委托尝试解析 weak_ptr 为共享指针。 如果成功,则它使用委托参数调用共享对象的方法;否则,它不执行任何作。 需要 C++/WinRT 版本 2.0.240111.5。

构造函数 (10) 构造一个委托,该委托尝试解析 weak_ptr 为共享指针。 如果成功,则调用具有委托参数的 lambda;否则,它不执行任何作。 需要 C++/WinRT 版本 2.0.240111.5。

delegate::operator() (函数调用运算符)

Invokes the delegate represented by the delegate object with the provided arguments.

Syntax

void operator()(T const&... args) const

See also