Получить адрес объекта с перегруженным оператором & - PullRequest
1 голос
/ 02 марта 2012

operator& для CComPtr перегружен, что приводит к краху моего общего написанного кода.

Мне интересно, есть ли способ заставить переменную вернуть адрес ее объекта?

Ответы [ 3 ]

4 голосов
/ 02 марта 2012

Решение отвратительно:

reinterpret_cast<CComPtr*>(&reinterpret_cast<char&>(ptr))
2 голосов
/ 02 марта 2012

Если вы можете использовать boost, рассмотрите возможность использования: addressof , если не можете, взгляните на реализацию.

0 голосов
/ 02 марта 2012

Вы можете преобразовать CComPtr в CComPtrBase, у которого, как я могу узнать на странице MSDN, нет перегруженного оператора.Это может выглядеть так:

CComPtr* addr=dynamic_cast<CComPtr*>(&((CComPtrBase)theCComPtr));

Я не знаю, работает ли это (я не могу попробовать), но кажется, что это может, и если это так, то немного лучше, чемрешение reinterpret_cast.

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