dziedziczenie wielokrotne

0
class Cprodukt
{
    //friend class warzywo; // deklaracja przyjazni, aby mozliwy byl dostep do po privat w nowej klasie pochodnej
protected:              // zaprzyjaznienie zamienione na rozwiazanie z polami protected
    int mLp;
    string mName;  // nazwa produktu
    double mCount;   // liczba produktow
    string mUnit;   // jednostka miary
    double mPrize;   // cena netto 1 sztuki
    double mVat;     // wartosc podatku VAT

public:
     Cprodukt();                   // konstruktor
     Cprodukt(int Nlp, string Nname, double Ncount, string Nunit, double Nprize, double Nvat);                   // konstruktor
    void wypelnij(void);

    void pokaz(void);
    virtual void pokaz_w_lini(void);
    Cprodukt(Cprodukt &l);     // konstruktor kopiujacy
    ~Cprodukt();                  // destruktor
    int pole_lp(void);
    void pole_lp(int);

    virtual void Load(std::fstream &File);
    virtual void Save(std::fstream &File);

};

class Cwarzywo : public Cprodukt
{
public:
    string mKolor;

    Cwarzywo();
    Cwarzywo(int Nlp, string Nname, double Ncount, string Nunit, double Nprize, double Nvat, string Nkolor);
    //void pokaz(void);
    void pokaz_w_lini(void);
    void Load(std::fstream &File);
    void Save(std::fstream &File);

};

class Cprocesor :public Cprodukt
{
public:
    string mProducentProc;
    double mTaktowanieGhz;
    Cprocesor();
    Cprocesor(int Nlp, string Nname, double Ncount, string Nunit, double Nprize, double Nvat, string NproducentProc,double NtaktowanieGhz);
    //void pokaz(void);
   virtual void pokaz_w_lini(void);
};

class Cpamiec : public Cprodukt
{
public:
    string mProducentRam;
    int mPojemnoscGb;
    Cpamiec();
    Cpamiec(int Nlp, string Nname, double Ncount, string Nunit, double Nprize, double Nvat, string NproducenRamt,int NpojemnoscGb);
    //void pokaz(void);
    virtual void pokaz_w_lini(void);
};

class Ckomputer : public Cprocesor //,public Cpamiec
{
    public:
    Ckomputer();
    Ckomputer(int Nlp, string Nname, double Ncount, string Nunit, double Nprize, double Nvat, string NproducentProc,double NtaktowanieGhz);//, string NproducentRam,int NpojemnoscGb);
    virtual void pokaz_w_lini(void);

};

Wkleiłem tylko część kodu bo jest tego trochę.Moje pytanie jak stworzyć obiekt komputer który ma w sobie obiekt/dane? z klas procesor oraz pamięć?

0
Ckomputer komputer(1,"Komputer",10.0,"unit",100.90, 300, "Sefl", 4)

O to chodziło?

1

Dziedziczenie modeluje "jest czymś". Agregacja modeluje "zawiera". O ile komputer i pamięć mogą być produktami, to powiedzenie, że komputer jest procesorem lub pamięcią jest niepoprawne. Niech procesor (a może wektor procesorów?) i pamięć (wektor?) będą elementami komputera.

0

kq właśnie myślałem o tym w podobny sposób który przedstawiłeś ale nie wiem jak to przełożyć na kod :/

1
struct Komputer
{
    Cprocesor procesor;
    Cpamiec pamiec;
};

1 użytkowników online, w tym zalogowanych: 0, gości: 1