【问题标题】:What do these statements mean in C++/CX?这些语句在 C++/CX 中是什么意思?
【发布时间】:2013-03-16 23:31:07
【问题描述】:

这些是陈述

this->SizeChanged += ref new SizeChangedEventHandler(this, &MainPage::MainPage_SizeChanged);

Scenarios->SelectionChanged += ref new SelectionChangedEventHandler(this, &MainPage::Scenarios_SelectionChanged);

//These lines were in MainPage Constructor.
//Scenarios is the name of a ListBox

这两行有什么作用?

MainPage::MainPage_SizeChangedMainPage::Scenarios_SelectionChanged 是什么? 我可以看到两个具有此名称的函数,但是函数调用中没有()? 还有为什么它们前面有&? 如果它们的返回类型为 void,它们如何用作参数?

在这两行中,为什么使用 += 而不仅仅是 =?如果使用 = 会发生什么?

【问题讨论】:

  • 对于&,请在您最喜欢的 C++ 书籍中查找“指向成员函数的指针”。对于+=,请查找Events

标签: windows-runtime c++-cx


【解决方案1】:

这些行订阅了事件。例如,SizeChanged 是事件,SizeChangedEventHandler 是委托类型(类似于函数指针,但也包含对类实例的引用),MainPage_SizeChanged 是事件处理程序。

没有(),因为这不是函数调用。执行该行时不会调用函数MainPage_SizeChanged,它会在每次引发SizeChanged 事件时执行。并且使用了&,因为这就是在 C++ 中创建函数指针的方式。

如果您使用= 而不是+=,您的代码将无法编译。你不能设置一个事件,你只能订阅(使用+=)和取消订阅(-=)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-05
    • 2022-01-12
    • 2016-07-04
    • 1970-01-01
    • 2020-01-31
    • 2021-12-25
    • 2014-03-30
    相关资源
    最近更新 更多