• 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
123 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ź 320 wizyt
+1 głos
1 odpowiedź 195 wizyt

92,551 zapytań

141,400 odpowiedzi

319,531 komentarzy

61,938 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

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!

...