On 23/02/2011 18:42, Simon wrote:
On 23/02/2011 14:37, Dmitry Olshansky wrote:
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);
}
That's the wrong way round.
Nuts never mind. I'm talking out my ass.
Though how do you do it using the cast operator?
That would be closer to the c++ implementation.
--
My enormous talent is exceeded only by my outrageous laziness.
http://www.ssTk.co.uk