Calling an alias for a Class method in another scope

d coder dlang.coder at gmail.com
Fri Jun 1 06:25:57 PDT 2012


Hello Steve, thanks for looking at this.

I see the code works when I create the delegate first and then send it to
template.  That is the way you do it here.


> void main() {
>  Foo f = new Foo();
>  auto dg = &f.foo; // need to make a symbol so it can be aliased
>  callfoo!(dg)();
> }
>
>
But it does not work when I put &f.foo directly as the template argument.
But it works when I say:

void main() {
  Foo f = new Foo();
  callfoo!(() {f.foo();})(f);
}

But that still does not solve my problem. In my real code, I want to send
the delegate to a template class. And I am supposed to do that as a member
of another class. So the code looks something like:

Class Bar(alias F) {
 // Call F in some function here
}

Class Foo {
  void foo();
  Bar!(() {foo();}) bar;
}

Again this does not work. Maybe I am expecting too much from D. :-) I am
somewhat aware of the issues involved here. I have seen some earlier D
threads.

But then I thought there might be a way to pass the method function literal
(foo) and separately the this pointer of Foo object and then combine the
two at the other end (inside Bar).

Regards
- Puneet
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/digitalmars-d/attachments/20120601/c9e32a26/attachment.html>


More information about the Digitalmars-d mailing list