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