• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak poprawnie zdefiniować tę klasę zagnieżdżoną?

Object Storage Arubacloud
0 głosów
131 wizyt
pytanie zadane 2 lutego 2019 w C i C++ przez Alan Kruszyński Obywatel (1,410 p.)

Chcę zdefiniować klasę Paragon która zawiera klasę Faktura. 

class Dokument{
public:
    virtual void dodaj_dokument()=0;
};

class Paragon :public Dokument{

        int nr_paragonu;
        int wartosc;
        vector <Towar> pozycje;
        Paragon();
        ~Paragon();



    //KLASA ZAGNIEZDZONA FAKTURA
    class Faktura :public Dokument{
        int nr_faktury;
        int wartosc;
        vector <Towar> pozycje;
    public:
        virtual void dodaj_dokument();
        Faktura();
        ~Faktura();
    };

public:
    virtual void dodaj_dokument();
};

class Baza_Dokumentow{
    friend class Paragon;
    friend class Faktura;

    vector <Paragon> paragony;
    vector <Paragon::Faktura> faktury;
};

Jak poprawnie to zdefiniować? Przy takim zapisie otrzymuję błąd "class Paragon::Faktura is private" Chcę aby Faktura była zagnieżdżona w Paragon oraz by Baza_Dokumentow zawierała w osobnych wektorach obiekty tych klas

1 odpowiedź

0 głosów
odpowiedź 2 lutego 2019 przez Arkadiusz Sikorski Pasjonat (20,160 p.)

W bazie dokumentów zadeklarowałeś przyjaźń z z klasą Faktura i klasą Paragon, co nie oznacza, że klasa Paragon "uznaje" jako przyjaciela klasę Baza_Dokumentow (przyjaźń w C++ jest jednostronna). Musisz zdefiniować przyjaźń z bazą dokumentów w klasie Paragon, żeby można było uzyskać dostęp do składowych prywatnych paragonu (w tym prywatnej klasy wewnętrznej).

Inna sprawa, że układ klas wydaje się trochę dziwny, jak dla mnie. Dlaczego faktura zawiera się w paragonie? Nie powinna po niej dziedziczyć albo dziedziczyć pod dokumencie?

Podobne pytania

0 głosów
1 odpowiedź 361 wizyt
+1 głos
1 odpowiedź 210 wizyt

92,761 zapytań

141,685 odpowiedzi

320,485 komentarzy

62,105 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...