"operator" overloading?

Dmitry Olshansky dmitry.olsh at gmail.com
Wed Feb 23 06:37:23 PST 2011


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



More information about the Digitalmars-d-learn mailing list