inheritance from abstract broken?

Mike Parker aldacron at gmail.com
Wed Jan 8 04:30:01 PST 2014


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);
    }
}


More information about the Digitalmars-d-learn mailing list