Witam, mam problem który, jak sądzę, wynika z mojej niewiedzy z dziedziny programowania obiektowego. Próbowałem szukać odpowiedzi na google, ale jakoś nie mogę znaleźć nic pomocnego.
Mam program, w którym dwa obiekty się nawzajem atakują: Creature i Zamek (wiem, że część jest po polsku, część po angielsku, jeszcze nie wyrobiłem sobie spójnego sposobu nazywania klas, dopiero się uczę na tych programach).
Najpierw napisałem klasie Creature funkcję Atakuj do atakowania Zamku, więc musiałem w Creature wpisać #include "ClassZamek.h". Wszystko działało. Dzisiaj z kolei napisałem funkcję Atakuj dla Zamku, więc w Zamku dodałem #include "ClassCreature.h". Wtedy pojawił się błąd kompilacji:
classcreature.h(12): error C2061: syntax error : identifier 'Zamek'
ClassCreature dzisiaj nie zmieniałem, stąd domyślam się, że może chodzi o wzajemne includowanie się Zamku i Creature.
Czy istnieje jakaś zasada odnośnie współpracy ze sobą klas? Jakiś jeden wspólny plik nagłówkowy w którym są includowane inne pliki nagłówkowe, lub coś w tym stylu?
Zamieszczam poniżej wycinki klas, gdzie "pracują na sobie nawzajem", może mój błąd jest gdzieś indziej.
ClassCreature.h
#include "ClassZamek.h"
class Creature{
public:
void Attack(Zamek* zamek);
ClassCreature.cpp
void Creature::Attack(Zamek* zamek){
zamek->Trafienie(m_dmg);
}
ClassZamek.h
#include "ClassCreature.h"
class Zamek{
public:
void Atakuj(vector<Creature>* enemies);
ClassZamek.cpp
void Zamek::Atakuj(vector<Creature>* enemies){
ItWieza->Atakuj(enemies);
}
Może jeszcze jakieś zastrzeżenia odnośnie kodu? Jeśli chodzi o programowanie obiektowe, to jestem samoukiem, więc każdy wykład mile widziany :)