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 :(

Reply via email to