On Mon, 16 May 2011 15:32:43 -0400, useo <[email protected]> wrote:
Hey guys,
is there any chance to create an abstract constructor like:
abstract class ABC {
abstract this();
}
DMD always says "...this non-virtual functions cannot be abstract" -
when I use an interface like:
interface ABC {
this();
}
I get a similar error: "...constructors, destructors, postblits,
invariants, unittests, new and delete functions are not allowed in
interface ABC"
Is there any solution or is it possible to create such inheritances
in DMD?
I think what you are trying to do is say, "if a class implements interface
ABC, it must have a default constructor". Such a requirement is faulty.
The point of an interface is to able to pass a portion of a class'
functionality to a function during runtime. However, the instance must
*already exist*. It makes no sense to posit requirements on the
constructor.
What you want is a compile-time requirement using a template constraint.
You may think "damn, but I don't want to make my function a template", I'd
say see previous point ;)
-Steve