"operator" overloading?

Simon s.d.hammett at gmail.com
Wed Feb 23 10:48:49 PST 2011


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


More information about the Digitalmars-d-learn mailing list