Mamy sobie klasę i metody:

class jakasKlasa
{
private:
	jakisObiekt* wskaznik;
	jakasKlasa* wskaznik2;
public:
	jakisObiekt* funkcja();
	jakasKlasa* funkcja2(jakasKlasa* argument);
};

jakisObiekt jakasKlasa::funkcja()
{
	return wskaznik;
}

jakasKlasa* jakasKlasa::funkcja2(jakasKlasa* argument)
{
	argument = wskaznik2;
	return argument;
}

Jedna metoda zwraca wskaźnik do jakiegoś innego obiektu, druga - zwraca wskaźnik tego samego typu co klasa (coś w stylu wskaźnika na rodzica/potomka/poprzednika etc. w np. drzewie, na liście itd.).
Zgodnie z zasadą hermetyzacji, atrybuty mają być prywatne - no i są. Jednak dostęp do nich jest możliwy za pomocą metod publicznych.
Jak się dowiedziałem, czegoś takiego jak wyżej, zrobić nie można, bo łamie to owe zasady. W sumie, "równie dobrze" można zrobić atrybuty publiczne i odwoływać się do niech bezpośrednio, a nie przez publiczne metody. Da się to jakoś ominąć, czy po prostu nie mam tam dostępu? Zwykłego inta też nie mogę tak przekazać, czy to tylko dotyczy wskaźników?
Czy można stworzyć na klasach jakąś strukturę typu np. lista czy drzewo, gdzie w klasie nadrzędnej mamy wskaźnik do np. jakasKlasa i chcąc przejść do następnego elementu korzystamy z funkcji typu

naszwskaznik = naszwskaznik->funkcja2(jakasKlasa* argument)

, czy trzeba użyć struktur?