Problem z przeciążeniem operatora []

0

To już 3 temat w ciągu 3 godzin ;p Mam nadzieję, że dostanę odpowiedź na każdy z problemów. Chciałem sobie przeciążyć operator [] w takim kontekście:

vector <TWpis> wpis;
TWpis & operator[](int index) //metoda klasy TBazaDanych, 'wpis' jest prywatny
{
        return wpis[index];
}
//gdzieś w funkcji main:
TBazaDanych spis("spis");
cout << spis.wpis[0].imie << " " << spis.wpis[0].nazwisko; //błąd! `TBazaDanych::wpis is private` WTF?!

No i o co chodzi? Jest prywatny, ale programowanie obiektowe chyba polega na dostępie do składowych poprzez metody, nie?

EDIT: Z ostatniej chwili! Zapomniałem, że operator[] jest częścią TBazaDanych, a nie TWpis ;) Dobra, ale teraz co zrobić, żebym sobie robił tak jak wyżej: spis.wpis[0].nazwisko;, a nie spis[0].nazwisko - to drugie jakoś dziko wygląda. Przecież tablicę mam wpis, a nie spis.

0

sam powiedziałeś, że 'wpis' jest prywatny, więc nie możesz do niego dostać się tak jakby był publiczny, czyli spis.wpis[0], musisz przez funkcje składowe, albo uczyć wpis publicznym

0

skoro chcesz spis.wpis[0].nazwisko, to nie potrzebujesz operatora, bo ten już jest w klasie vector, tylko wpis musi być publiczny.

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