\\ Declare classes only refered to by pointer/reference: class TC_MVPDFBase; class TC_VectorModelBuilderBase; class TC_VectorModelBase { private: TC_MVPDFBase *_param_density; TC_VectorModelBuilderBase *_builder; ... public: TC_VectorModelBase(); TC_VectorModelBase(const TC_VectorModelBase&); TC_VectorModelBase& operator=(const TC_VectorModelBase&); virtual ~TC_VectorModelBase(); virtual void instance(RD_Vector& x, const RD_Vector& b) =0; virtual void params(RD_Vector& b, const RD_Vector& x) =0; ... // Distribution of parameters: const TC_MVPDFBase& paramDensity() const; const TC_VectorModelBuilderBase& builder(); // Standard IO short versionNo() const; virtual const string& isA() const =0; virtual TC_VectorModelBase* clone() const = 0; virtual void print(ostream& os) const; virtual void save(RD_Bfstream& bfs) const; virtual void load(RD_Bfstream& bfs); };
This demonstrates:
class TC_VectorModelBase; class TC_VectorModelBuilderBase { public: virtual ~TC_VectorModelBuilderBase() {}; virtual void build(TC_VectorModelBase& model, TC_VectorDataBase& data) =0; .... // Standard IO virtual const string& isA() const = 0; .... };