Internal delegate and Stack Overflow

tsalm tsalm at free.fr
Fri Nov 28 16:32:14 PST 2008


Le Sat, 29 Nov 2008 01:08:28 +0100, BCS <ao at pathlink.com> a écrit:

> Reply to TSalm,
>
>> Hello,
>>  I would do something like this, but this return me an execution error
>> : object.Exception: Stack Overflow
>>  // --------CODE--------
>> class A
>> {
>> void delegate() dg;
>> void doIt()
>> {
>> dg();
>> }
>> }
>> class B
>> {
>> A a;
>> this()
>> {
>> a = new A;
>> a.dg = { doSomething(); };
>> }
>> void doSomething() { }
>> }
>> void main()
>> {
>> auto b = new B;
>> b.a.doIt();
>> }
>> // ------END CODE------
>>  Is this a bug or have I do something wrong ?
>> Thanks in advance for your help,
>> TSalm
>
> If this is d1.0 the error is that you are allowing an anon delegate to  
> escape the enclosing function.

Yes, it's on D1.036.


>
> a.dg = &this.doSomething;  // this would be ok if that helps.
>
>
>  if it is 2.0, I think this is correct.
>

Yes, you are right.
But this is an example code. The "true" code uses delegates with argument  
which differs from called functions, so I can't point delegate directly to  
them.
And this anonymous function's way is really fastest to code... I must  
waiting for a D2 stable version ;-)

Thanks


More information about the Digitalmars-d-learn mailing list