Need 'this' to access 'opCall'? Was I trying to?

Regan Heath regan at netmail.co.nz
Mon Sep 26 09:24:33 PDT 2011


On Mon, 26 Sep 2011 17:14:45 +0100, Jonathan M Davis <jmdavisProg at gmx.com>  
wrote:

> On Monday, September 26, 2011 09:01:20 Mehrdad wrote:
>> On 9/26/2011 8:13 AM, Trass3r wrote:
>> > Your opCall isn't static.
>>
>> Yeah, I don't want it to be. I want to use opCall on an instance, not on
>> the type.
>
> Well, it looks like having declared a non-static opCall makes the
> automatically generated constructor for the struct unusable - which may  
> or may
> not be a bug (there are similar issues with declaring opCast). If you  
> just
> declare a constructor, it should solve the problem.

I couldn't get that to work.. but this does:

import std.stdio;

struct Adder {
     int v;
     auto opCall(int x) { return x + v; }
}

auto adder(int v) {
	Adder a;
	a.v = v;
     return a;
}

void main() {
     auto a = adder(5);	
	writefln("%s", a(5));
}

-- 
Using Opera's revolutionary email client: http://www.opera.com/mail/


More information about the Digitalmars-d mailing list