WedX - журнал о программировании и компьютерных науках

Что означают эти операторы в C++/CX?

Это заявления

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_SizeChanged и MainPage::Scenarios_SelectionChanged? Я вижу две функции с этим именем, но почему в вызове функции нет ()? И почему им предшествует &? И как их можно использовать в качестве аргумента, если их возвращаемый тип недействителен?

Почему в двух строках используется +=, а не только =? Что произойдет, если используется =?

16.03.2013

  • Для & найдите функцию Pointer to member в вашей любимой книге по C++. Для += найдите События. 16.03.2013

Ответы:


1

Эти строки являются подпиской на события. Например, SizeChanged — это событие, SizeChangedEventHandler — тип делегата (похожий на указатель функции, но также содержит ссылку на экземпляр класса), а MainPage_SizeChanged — обработчик события.

() нет, потому что это не вызов функции. Функция MainPage_SizeChanged не будет вызываться при выполнении этой строки, она будет выполняться каждый раз при возникновении события SizeChanged. И & используется, потому что именно так создаются указатели на функции в C++.

Если бы вы использовали = вместо +=, ваш код не скомпилировался бы. Вы не можете установить событие, вы можете только подписаться (используя +=) и отписаться от него (-=).

16.03.2013
Новые материалы

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


Для любых предложений по сайту: [email protected]