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;
}