Order of base-class constructor calls
Steven Schveighoffer
schveiguy at yahoo.com
Wed Oct 12 07:31:53 PDT 2011
On Tue, 11 Oct 2011 12:40:29 -0400, Andrej Mitrovic
<andrej.mitrovich at gmail.com> wrote:
> Nope. Private ctors have to be called from within the same module,
> whether implicit or not:
>
> test.d:
> class Foo
> {
> private this() { } // Error: constructor main.Bar.this no match
> for implicit super() call in constructor
> }
>
> import test;
> class Bar : Foo
> {
> this() { }
> }
>
> void main()
> {
> auto bar = new Bar();
> }
Hm... that makes sense.
You can try mucking around with roll-your-own construction. That is,
ignore the constructor and use a mixture of public final initialize
functions + protected virtual initialize functions.
It might just be something that you have to accept is not definable by the
base class :(
C++ requires construction of base classes before the main body of a
derived constructor is called. And that has its own problems too...
-Steve
More information about the Digitalmars-d-learn
mailing list