niedziela, 29 sierpnia 2010

Dziedziczenie prywatne w C++

Dziedziczenie prywatne nie jest zbyt często wykorzystywane w programowaniu, jednakże jest ono możliwe, pewnie z chęci podrzymania niejako 'kompletności' języka. Dzisiejsza zagadka będzie dotyczyła właśnie tego mechanizmu.

Mamy następujący kod:

  1. class Bazowa {  
  2.         public:  
  3.                 int a;  
  4. };  
  5. class Dziecko : private Bazowa {  
  6.                 // MODYFIKACJA  
  7. };  
  8. int main() {  
  9.         Dziecko a;  
  10.         a.a=5;  
  11.         cout << a.a << "\n";  
  12.         return 0;  
  13. }  

Polega ona na podaniu przynajmniej dwóch takich modyfikacji wskazanego miejsca, aby kod skompilował się i działał.

Miłej zabawy.

4 komentarze:

  1. Można napisać w przestrzeni publicznej nową zmienną:
    int a;

    Można też użyć deklaracji dostępu using:
    using Bazowa::a;

    OdpowiedzUsuń
  2. Using nie jest konieczny, wystarczy
    Bazowa::a;

    Prócz tego można zaprzyjaźnić się z main:
    friend int main();

    Lub jak zwykle wszystko można popsuć dyrektywami preprocessora:
    #define Dziecko Bazowa

    :-)

    OdpowiedzUsuń
  3. Nie mogłem znaleźć twojego e-maila ale chciałem podziękować za pakiety do Archa, odwalasz kawał dobrej roboty :)

    PS opis do nowego kadu nie powinien zawierać również info o obsłudze jabbera?

    OdpowiedzUsuń
  4. Panie Mateuszu,
    czy mogłabym prosić o prywatny kontakt?
    Mam dla Pana propozycję.
    beata.poltorak@talso.pl
    664453065

    Pozdrawiam,
    Beata Półtorak

    OdpowiedzUsuń