On Tuesday 15 January 2002 6:37 pm, Angus Leeming wrote: > Here's a second question. Many of the other controllers (15 in fact) are > derived from ControlDialog, so again I'll split ControlDialog.h into > ControlDialog.h and ControlDialog.tmpl > > However, there are only two instatiations of ControlDialog: > ControlDialog<ControlConnectBD> > ControlDialog<ControlConnectBI> > > is there a way therefore of changing something in ControlDialog.tmpl that > results in only two recompiles? Ie, rather than #include "ControlDialog.tmpl" > in all 15 files of the derived classes, I'd like to create > ControlDialog<ControlConnectBD> and ControlDialog<ControlConnectBI> > > Can this be done? If so, how?
answering my own question: file "ControlDialogImpl.h" class ControlConnectBD; class ControlConnectBI; struct ControlDialogBD : public ControlDialog<ControlConnectBD> { ControlDialogBD(); }; struct ControlDialogBI : public ControlDialog<ControlConnectBD> { ControlDialogBI(); }; file "ControlDialogImpl.C" #include "ControlDialogImpl.h" #include "ControlDialog.tmpl" ControlDialogBD::ControlDialogBD() : ControlDialog<ControlConnectBD> {} ControlDialogBI::ControlDialogBI() : ControlDialog<ControlConnectBD> {} Derive the 15 classes from ControlDialogBD and ControlConnectBI. These, therefore need #include that .h file. Create the two instatiations by compiling the ControlDialogImpl.C file. Bingo! But are you happy with this? Angus