• 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ą?

Cloud VPS
0 głosów
165 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ź 521 wizyt
+1 głos
1 odpowiedź 269 wizyt
0 głosów
1 odpowiedź 821 wizyt

93,460 zapytań

142,454 odpowiedzi

322,724 komentarzy

62,837 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

Kursy INF.02 i INF.03
...