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