Dziedziczenie

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?


class rodzice
{
	int zmienna;
protected:

string dobre_cechy;
string zle_cechy;

};

class potomstwo: private rodzice
{
public:

using rodzice::zle_cechy;

}; 
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ć?

0

nikt nie pomoże?

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

0

widzę wszyscy wymiękli

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.

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1