opDispatch returning this not working in a hierarchy
Daniel Murphy
yebblies at nospamgmail.com
Wed Feb 1 20:23:02 PST 2012
There are some issues with mixing opDispatch and property syntax. Try:
base.items().printValue( true );
This list is not for posting bug reports, it's just for bugzilla issues.
Please post this kind of thing to d.learn or open a bug report at
http://d.puremagic.com/issues/
"Daniel L. Alves" <daniel_lopes_alves at hotmail.com> wrote in message
news:jgd1oj$2r04$1 at digitalmars.com...
> Hi,
> I don't know if this is really a bug or some gotcha of the language that I
> don't get. I'm sorry if it happens to be the later.
>
> When I run this simple program
>
> class DispatchBase
> {
> auto opDispatch( string m, Args... )( Args args )
> {
> writefln( "Tried to call %s", m );
> return this;
> }
> }
>
> class DispatchDerived : DispatchBase
> {
> void printValue( T )( T value )
> {
> writefln( "Value is %s", value );
> }
> }
>
> void main()
> {
> DispatchBase base = new DispatchDerived();
> base.items.printValue( true );
> }
>
> I receive this output
>
> Tried to call items
> Tried to call printValue
>
> But what I was expecting is
>
> Tried to call items
> Value is true
>
> After all, opDispatch returns 'this'. The interesting thing is that when I
> move opDispatch up to DispatchDerived, everything works fine. It's like
> 'this'
> inside opDispatch didn't recognize its real type when in a base class.
>
> Hope you can help me.
> Daniel
More information about the Digitalmars-d-bugs
mailing list