inheritance from abstract broken?

evilrat evilrat666 at gmail.com
Wed Jan 8 04:40:38 PST 2014


On Wednesday, 8 January 2014 at 12:29:48 UTC, Mike Parker wrote:
> On 1/8/2014 9:22 PM, evilrat wrote:
>> Greetings everyone,
>>
>> i have the code where i have to keep pointers to so 
>> storage(context
>> dependent stuff), so i tried declare abstract class with ctors 
>> and it
>> didn't worked.
>>
>> ------- [code]
>>
>> class MyContext;
>>
>> abstract class MyObject
>> {
>>    // yet another bug? all descendants errors no default 
>> ctor...
>>    this() {}
>>
>>    this(MyContext mc)
>>    {
>>    }
>>
>>    MyContext _owner;
>> }
>>
>> class MyObjectA : MyObject
>> { ... }
>>
>> //inside MyContext.CreateObj
>> MyObject CreateMyObj()
>> {
>> auto obj = new MyObjectA(this) // two errors produced
>>
>> ... do something with obj before returning it ...
>> return obj;
>> }
>>
>> errors:
>> -----------
>> Error: no constructor for MyObjectA
>> Error: constructor MyObjectA.this () is not callable using 
>> argument
>> types (MyContext)
>> --------
>>
>> am i wrong about abstract classes usage in D or this is a bug?
>
> You're constructing a MyObjectA instance, not a MyObject, so 
> the compiler is looking for a constructor in MyObjectA that 
> takes a MyContext param.
>
> class MyObjectA : MyObject {
>    this(MyContext mc) {
>       super(mc);
>    }
> }

ok. gotta using mixins :(


More information about the Digitalmars-d-learn mailing list