- 1
typedef boost::shared_ptr<LPDIRECT3D9> Direct3dShared;
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+10
typedef boost::shared_ptr<LPDIRECT3D9> Direct3dShared;
Те кто знают, что такое в гейдеве LPDIRECT3D9 и IDirect3D9 - поймут.
Думаю сегодня даже не нужно писать с какого это сайта.
LPDIRECT3D9 - соответственно глупый указатель на интерфейс.
UPD: А при обращении к методам интерфейса он пишет что-то типа (*d3d)->someFunction()? :)
boost::intrusive_ptr?
А пару функций же можно написать всего один раз, или мне пора спать?
Да, он всю работу сваливает на эти джве функции.
Траблы пока такие вижу:
- COM объекты рождаются со 1 на счетчике, поэтому надо не забывать передавать false в конструктор intrusive_ptr;
- С QueryInterface непонятки: в своем то классе можно запилить его как оператор приведения типа, а тут - куй, придется делать внешний хелпер.
Но для этого нужен способ для выяснения IID'а по интерфейсу. Изкоробки его вроде нет?
Ну, буст же кроссплатформенен, в отличие от СОМ, я б предположил, что нет там такого. Зато есть замечательный Microsoft::WRL::ComPtr в составе vs2012.
Но ведь это же геймдев, не написать свой dx_ptr - кощунство, сам таких три версии писал :)
и делать шаредптр указателя это неплохо, неплохо
ps. а, борманд уже настрочил)