Лучший способ переноса делегатов .NET в C ++ - PullRequest
2 голосов
/ 12 июня 2011

Я работаю над простым проектом портирования, в котором некоторый API-код .NET необходимо преобразовать в код C ++.Здесь нет графического интерфейса.Я немного запутался в выборе наилучшего способа обращения делегатов.Будет полезно, если вы поделитесь своими мыслями, чтобы помочь мне решить, следует ли просто заменить делегатов указателями на функции, или следует реализовать какой-либо шаблон Observer.По некоторым причинам я не могу использовать любую стороннюю библиотеку, такую ​​как Boost.Поэтому я предпочитаю что-то довольно простое в реализации, но достаточно эффективное и хорошее, учитывая концепцию дизайна.

Спасибо.

Ответы [ 4 ]

3 голосов
/ 13 июня 2011

Быстрые делегаты Дона Клагстона - популярный выбор для делегатов в C ++. Они далеко не простые, но вы сможете легко скопировать и вставить код в свой проект. Я не эксперт в делегатах C #, поэтому я не уверен, насколько легко они будут портировать оттуда, но они эффективны и должны охватывать большинство случаев использования.

1 голос
/ 13 июня 2011

Насколько актуален ваш компилятор?Есть ли у него особенности C ++ 0x?А вы можете использовать библиотеку C ++ std?Если у вас есть C ++ 0x и вы можете использовать STL, тогда std :: function * наиболее идентичен делегату C #.В противном случае вам придется либо использовать указатели функций, либо бросить свой собственный шаблон наблюдателя.

* Идентичен функции усиления, но по некоторым причинам вы не можете использовать повышение.

0 голосов
/ 21 июня 2011

Я создал собственную систему обработки событий . Это довольно просто. Я просто следовал основам C ++. Я думаю, что после подтверждения C ++ 0x ppl получит больше свободы. Пока я считаю, что это довольно предпочтительно.

0 голосов
/ 13 июня 2011

Попробуйте следующее, новое обновление уже в пути. Вам не нужно добавлять много файлов в ваш проект.

http://sourceforge.net/projects/eventchain/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...