170 похожих чатов

У меня есть вопрос про unique_ptr: Я сейчас оборачиваю COM-объекты в

unique_ptr с кастомным делетером вызывающим IUnknown::Release. Но хочу ещё меньше бойлерплейта по созданию умных указателей из обычных указателей (а ещё проверка на ошибки) для каждого вызова метода этих COM-объектов.
Лучшее что смог придумать сейчас, тонны свободных функций вызывающих метод объекта и обрамляющие его этим ненавистным бойлерплейтом.
Хотелось бы как-то более красиво (ООП или UFCS для этих свободных функций, но его пока нет). Можно пронаследоваться от unique_ptr чтобы добавить к нему обернутые методы обернутого класса?

13 ответов

23 просмотра

А почему бы не использовать CComPtr?

LaG1924- Автор вопроса
Till Schneider
А почему бы не использовать CComPtr?

Потому что я не очень умный и не знал об этом. И изначальный автор кода с которым работаю - тоже не очень умен. И те, кто писал документацию на msdn. И те кто проектировал COM. Но в первую очередь - я. Спасибо, кажется, что это то, что нужно.

LaG1924- Автор вопроса
Stanislav Ershov
https://github.com/microsoft/wil/wiki/WinRT-and-CO...

Именно на этом пишут современный cpp-windows-код? Если да, то какой враппер выбрать (MFC/ATL/WIL/etc) чтобы оно работало минимум под 7-кой (для MFC вроде нужна поддержка со стороны ОС - про остальные не знаю) и органично вписывалось в современный плюсовый код?

LaG1924- Автор вопроса
LaG1924
Именно на этом пишут современный cpp-windows-код? ...

WIL хорош, но, наверное, все же нет. https://github.com/microsoft/wil/issues/97#issuecomment-540369663

LaG1924
Потому что я не очень умный и не знал об этом. И и...

Вы не путайте понятия умный и опытный. Мы все не дураки тут. Но у каждого свой опыт, у кого то больше в одной теме, у кого то в другой .

LaG1924- Автор вопроса
The Pressbraker
Вы не путайте понятия умный и опытный. Мы все не д...

Прошу прощения. Не хотел опять токсичить. Я хотел сказать, что есть некоторая проблема в том, что есть более совершенная технология, но даже сам факт её существования никак не афишируется (и пока напрямую не нагугил CComPtr не видел ни единого намека моей части Интернета на ATL или WIL), а большинство кода (как из реальных проектов, так и примеры с MSDN) используют легаси-подход из C++98 (а если идет речь про саму win32, то там вообще в С, но тут претензий уже меньше).

LaG1924
Прошу прощения. Не хотел опять токсичить. Я хотел ...

Я не в теме тут. Просто хотел узнать, что такое ATL? Про MFC я знаю это просто C++ обертка над winapi (которая изначально имеет С интерфейс )

Юник семантически не подходит для com

LaG1924- Автор вопроса
LaG1924
Именно на этом пишут современный cpp-windows-код? ...

Если у кого-то есть опыт использования WIL'a, то просьба им поделиться. Особенно поддержка старых ОС интересует (про актуальный компилятор и winsdk понятно).

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта