Order of base-class constructor calls

Regan Heath regan at netmail.co.nz
Tue Oct 11 10:14:57 PDT 2011


On Fri, 07 Oct 2011 23:02:33 +0100, Andrej Mitrovic  
<andrej.mitrovich at gmail.com> wrote:
> So I'm looking for some techniques or tricks (or, dare I say, design
> patterns :x) you guys might have if you've ever ran into this kind of
> problem.

The best I can come up with is a runtime solution:

import std.stdio;

class Base {
     private bool _init = false;
     this(int x) { _init = true; }
     void foo()
     {
         if (_init) writefln("ok");
         else writefln("not initialised");
     }
}

class DerivedWell : Base {
     this(int x) {
         super(x);
         foo();
     }
}

class DerivedBadly : Base {
     this(int x) {
         foo();
         super(x);
     }
}

void main()
{
     auto d1 = new DerivedWell(1);
     auto d2 = new DerivedBadly(1);
}

-- 
Using Opera's revolutionary email client: http://www.opera.com/mail/


More information about the Digitalmars-d-learn mailing list