[C++] inna klasa jako argument

0

Więc tworząc gierkę, blizej Snake natknąłem się na problem

otóz tworzę dwie klasy CPlansza i CSnake

i w momencie gdy chcę chcę aby jedna klasa była argumentem metody drugiej klasy np:
bool CPlansza::CzyKolizja(CSnake waz)

wyskakuje mi error C2061: syntax error : identifier 'CSnake'

czy jest jakiś sposób aby to załatwić? bo nie chce mi się iśc okrążną drogą i w mainie robić zmienne ktore będa wyłuskiwały z jednej klasy a potem będą parametrem drugiej;
nie można tego zrobić sposoben jakoś? dodam ze pliki nagłówkowe załączyłem naturalnie

0

Daj fragment kodu, to ci powiemy co robisz źle, bo oczywiście obiekty klasy można wysyłać jako argumenty funkcji.

0

mozna. to sie nazywa forward declaration:

class CPlansza;
class CSnake;

class CPlansza
{ ..
  void cos(CSnake & obj);
};

class CSnake
{ ..
  void cos(CPlansza& obj);
};
0

no też tak myslałem ale mi jakoś nie idzie :<

mam dwie klasy w innych plikach. Na początku wpisałem w nie tylko zmienne. Potem zacząłem to klasy CPlansza dodawać funkcje którymi argumentami była klasa CSnake, wtedy też było OK. Ale jak zacząłem rozwijać druga klasę w ten sam sposób, że argumentami funkcji była druga klasa to zaczeły mi wyskakiwać errory przy kompilacji :<

Teraz nie jestem w domu, wiec nie dam kodu, ale jak tylko wróce tyo wkleje coś.

0

z argumentami bedacymi obiektami klasy nigdy nie przejdzie, bo to wymaga aby dana klas byla zdefiniowana w calosci przed druga, czyli da sie tak tylko jedna z nich zaprojektowac, a druga zawsze bedzie miala problem. jezeli masz totalnie krzyzowe zaleznosci, to to przejdzie tylko ze wskaznikami albo referencjami - tak jak podalem w przykladzie

0

nie wiem za bardzo jak zrobić to z referencją albo ze wskaźnikami :< ale dam rade zrobić tak żeby jedna klasa była argumentem drugiej, nie odwrotnie ;)
Dzieki za pomoc! ;]

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