On 23.02.2011 17:08, %u wrote:
Hi everyone,

Was hoping someone could help me make sense of this bit of C++ code:

class canvas
{
     operator HDC() { return _hdc; }
protected:
     canvas(HDC hdc): _hdc(hdc) {}
     HDC _hdc;
}

 From what I understand, HDC is an alias for HANDLE in Windows. So
they are overloading canvas such that when assigned to handle
instance it returns _hdc? How is this done in D?

Thanks

Something like this, and i shouldn't be a class in D (it's a proxy sort of, right? ) :

struct canvas{
   alias getHandle this;
   this(HDC hdc){
     _hdc = hdc;
   }
   @property  HDC getHandle(){ return _hdc; }
private:
    HDC _hdc;
}

uinttest{
    HDC h = cast(HDC)1;
    canvas c = h;//intitalize
    h = c;
    assert(h == c);
}

--
Dmitry Olshansky

Reply via email to