Wskaźnik na Wskaźnik na klasę

0

Witam. Zająłem się ostatnio programowaniem obiektowym, ogólnie sobie radzę ale jest jedna rzecz której nie rozumiem.
Mianowicie posiadam wskaźnik na wskaźnik na klasę. Tzn:

 
class CPole;
CPole Pole;
CPole *Wsk1;
CPole **Wsk2;
Wsk1=&Pole;
Wsk2=&Wsk1;

//Wsk2 <- Wskaźnik na wskaźnik na klasę CPole

Ogólnie sprawa jest prosta, lecz w jednej z funkcji (wewnątrz klasy CPole, jeżeli to ma znaczenie) potrzebuję odwołać się do zawartości danej klasy na którą wskazuje wskaźnik na który mam wskaźnik xP
I tu zaczyna się zabawa:

To działa dobrze:

//Reszta klasy
CPole **Here; //To jest uzupełnione
	void Buduj ()
		{
			CPole *Its=*Here; //Tworzę wskaźnik na obiekt CPole i wyłuskuję wskaźnik Here
			Its->Teren=Pustynia;
			Its->Surowiec=Zelazo;
			Its->Las=Brak;
		}
//Reszta klasy

Ale to, mimo, iż to teoretycznie to samo już nie:

//Reszta klasy
CPole **Here; //To jest uzupełnione
	void Buduj ()
		{
			*Here->Teren=Pustynia;  //Wyłuskuję Here i staram się przejść do wartości w klasie
			*Here->Surowiec=Zelazo;
			*Here->Las=Brak;
		}
//Reszta klasy

O.o

Wywnioskowałem z tego, że będzie działało dobrze i to:

//Reszta klasy
CPole **Here; //To jest uzupełnione
	void Buduj ()
		{
			(*Here)->Teren=Pustynia;
			(*Here)->Surowiec=Zelazo;
			(*Here)->Las=Brak;
		}
//Reszta klasy

I szczęśliwy odniosłem w końcu sukces.

Mimo to nurtuje mnie czemu devC++ nie rozumiał drugiej wersji. Ktoś miły i doświadczony zgodzi się wyjaśnić dla niewinnego, zielonego programisty co kompilator próbował z tego zapisu odczytać?

1

Jeśli nie znasz priorytetu operatorów (a wyraźnie nie znasz...) to uzywaj nawiasów. Operator gwiazdki ma niższy priorytet niż -> więc zapis:

*X->Y

oznacza

*(X->Y) 
//a nie 
(*X)->Y 

jak chciałeś.

0

No i wszystko jasne xD
Proste a zaskakujące, co świadczy jednak o moim ograniczeniu. Dziękuję za pomoc.

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