Dziedziczenie

M1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 25
0

Witam, problem mam z poniższym kodem dziedziczone jest wszystko do sekcji prywatnej i chcąc wydobyć jedną składową powinna być ona w sekcji tej co w klasie podstawowej, czyli nie można rozluźnić ani zaostrzyć zakresu widoczności a tutaj z sekcji protected w podstawowej dałem do public w pochodnej i kompiluje się poprawnie, czemu?

Kopiuj

class rodzice
{
	int zmienna;
protected:

string dobre_cechy;
string zle_cechy;

};

class potomstwo: private rodzice
{
public:

using rodzice::zle_cechy;

}; 
M1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 25
0

using to nie deklaracja, nie ma "widoczności", nie jest składnikiem klasy. using ma znaczenie tylko i wyłącznie wewnątrz samej klasy. Podobnie jest z friend.

a można jakiś przykład prosić?

M1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 25
0

nikt nie pomoże?

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0

Ok doczytałem jak to jest: można zmienić zakres widoczności pola klasy, o ile to pole w danej chwili jest widoczne. Więc możesz przenieść protected do public, ale private już nie.
http://ideone.com/LXRFS

M1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 25
0

widzę wszyscy wymiękli

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0

Nie bardzo rozumiem o co ci chodzi. Pokazałem przykład który potwierdza że da się zmienić ten zakres. Możliwe że to jest implementation-dependent, musisz sprawdzić w dokumentacji.

M1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 25
0

Ja rozumiem i wiem, że tak działa, bo sam dałem przykład, ale w symfoni c++ jest co innego(np. nie powinno pozwolić składnika z public z sekcji podstawowej widzieć w klasie pochodnej w protected). No skoro działa to tak niech zostanie.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.