mrDIMAS

COMPtr #2

Dec 19th, 2015
201
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.59 KB | None | 0 0
  1. template<typename Interface>
  2. class COMPtr {
  3. private:
  4.     Interface * mInterface;
  5. public:
  6.     COMPtr() {
  7.         mInterface = nullptr;
  8.     }
  9.  
  10.     // for Direct3DCreate9
  11.     void Set( Interface * iface ) {
  12.         mInterface = iface;
  13.     }
  14.  
  15.     ~COMPtr() {
  16.         if( mInterface ) {
  17.             mInterface->Release();
  18.         }
  19.     }
  20.  
  21.     inline Interface ** operator & () {
  22.         return &mInterface;
  23.     }
  24.  
  25.     inline Interface * operator -> () {
  26.         return mInterface;
  27.     }
  28.  
  29.     operator Interface* () {
  30.         return mInterface;
  31.     }
  32.  
  33.     Interface * operator = ( Interface * iface ) {
  34.         iface->AddRef();
  35.         mInterface = iface;
  36.         return mInterface;
  37.     }
  38. };
Advertisement
Add Comment
Please, Sign In to add comment