delegate as memeber

deadalnix deadalnix at gmail.com
Tue Feb 21 07:43:53 PST 2012


Le 21/02/2012 16:32, Vladimir Panteleev a écrit :
> On Tuesday, 21 February 2012 at 15:22:15 UTC, deadalnix wrote:
>> struct stuff {
>> private Exception delegate() exceptionBuilder = delegate Exception() {
>> return new Exception("foobar");
>> };
>> }
>>
>> The following piece of code trigger a compiler error : delegate
>> module.stuff.__dgliteral1 function literals cannot be class members
>>
>> Why is that ? Is it a bug or a feature ?
>
> Delegates contain a context pointer. Your delegate literal has no context.
>
> You can't initialize it with the address of a method, either. For struct
> methods, the context pointer is a pointer to the structure. You can't
> have a .init that contains a pointer to an instance. You probably want
> to use a function literal.

It doesn't work with function either.

But I need delegate here. The default one doesn't require a context, but 
isn't it possible to pass null as a context, as none is needed ? This 
value can be changer later, and definitively require to be a delegate.


More information about the Digitalmars-d-learn mailing list