Se CReaderBase è astratta pura sei a cavallo.
Puoi fare qualcosa del genere (in molto pseudocodice):
codice:class CReaderBase { public: virtual ~CReaderBase() {} virtual funzioneA(); virtual funzioneB(); }; class CReaderDb : public CReaderBase { public: CReaderDb(CAdoDatabase a) : cad__(a); virtual ~CReaderDb() {} virtual funzioneA() { qualcosa con cad__; } virtual funzioneB() { qualcosa con cad__; } private: CAdoDatabase cad__; }; class CReaderApi : public CReaderBase { public: CReaderApi (CSapModel a) : csm__(a); virtual ~CReaderApi () {} virtual funzioneA() { qualcosa con csm__; } virtual funzioneB() { qualcosa con csm__; } private: CSapModel csm__; }; main() { CReaderBase* crA = new CReaderDb(CAdoDatabase); CReaderBase* crB = new CReaderApi(CSapModel); crA->funzioneA(); crA->funzioneB(); crB->funzioneA(); crB->funzioneB(); delete crA; delete crB; }