Moniperintä voidaan usein välttää käyttämällä luokan jäseninä muita luokkia (member objects). Esimerkiksi värillinen piste on piste, jolla on väritieto (is-a, has-a). Jos suhde on has-a- tyyppinen, koostamme (aggregation)luokan muista luokista:
/* MULTI1.CPP - alkioina muita luokkia */ #include <stdio.h> class caKuvio { ... / kuten aikaisemmin class cPiste : public caKuvio { ... / kuten aikaisemmin //---------------------------------------------------------------------------- class cVari { int r,g,b; public: cVari(int ir=0,int ig=0, int ib=0) : r(ir),g(ig), b(ib) {} virtual void tulosta() const { printf("%02x%02x%02x",r,g,b); } }; // cVari //---------------------------------------------------------------------------- class cVariPiste : public cPiste { cVari vari; public: cVariPiste(int ix,int iy,const cVari &ivari) : cPiste(ix,iy),vari(ivari) {} virtual void piirra() const { vari.tulosta(); printf(" "); tulosta("Väripiste"); printf("\n"); } }; int main(void) { cVariPiste p(2,4,cVari(255,0,255)); p.sytyta(); return 0; }