Thread overview | |||||
---|---|---|---|---|---|
|
November 02, 2005 Generic Inner Class Inheritance | ||||
---|---|---|---|---|
| ||||
Under DMD 0.136 and 0.137, generic inner classes cannot inherit from abstract inner classes. Is this the intended behavior? class Outer { int x; abstract class AbstractInner { void f(); } class GenericInner(T) : AbstractInner { T t; void f() { writefln("GenericInner.f()"); x = 2; } } class ConcreteInner : AbstractInner { void f() { writefln("ConcreteInner.f()"); x = 2; } } this() { auto AbstractInner g = new GenericInner!(int)(); // Error auto AbstractInner c = new ConcreteInner(); // Ok } } Error message: "class main.Outer.GenericInner!(int).GenericInner super class Abstract Inner is nested within Outer, not GenericInner!(int) Regards, Garett |
November 05, 2005 Re: Generic Inner Class Inheritance | ||||
---|---|---|---|---|
| ||||
Posted in reply to Garett Bass | Looks like a compiler bug. |
November 07, 2005 Re: Generic Inner Class Inheritance | ||||
---|---|---|---|---|
| ||||
Posted in reply to Garett Bass Attachments: | Garett Bass schrieb am 2005-11-02: > Under DMD 0.136 and 0.137, generic inner classes cannot inherit from abstract inner classes. Is this the intended behavior? > > class Outer { > int x; > > abstract class AbstractInner { > void f(); > } > > class GenericInner(T) : AbstractInner { > T t; > void f() { writefln("GenericInner.f()"); x = 2; } > } > class ConcreteInner : AbstractInner { > void f() { writefln("ConcreteInner.f()"); x = 2; } > } > > this() { > auto AbstractInner g = new GenericInner!(int)(); // Error > auto AbstractInner c = new ConcreteInner(); // Ok > } > } > > Error message: "class main.Outer.GenericInner!(int).GenericInner > super class Abstract Inner is nested within Outer, not > GenericInner!(int) > Added to DStress as http://dstress.kuehne.cn/run/t/template_class_12_A.d http://dstress.kuehne.cn/run/t/template_class_12_B.d Thomas |
Copyright © 1999-2021 by the D Language Foundation