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