Witam. Piszę dalej mój projekt. Dziś zaszła mi potrzeba użycia zmiennych globalnych(wiem że powinno się unikać, ale nie mam lepszego pomysłu na to co potrzebuję rozwiązać). Opiszę może problem. W projekcie(jest to gra) mam system bonusów. Jeżeli gracz zdobędzie bonus, to zostaje nim obdarzony w konkretny sposób. Np. zdobywa bonus szybkości. Jego szybkość poruszania wzrasta X razy. Ale jeżeli minie czas bonusu, to mnożnik X spada do 1(normalna prędkość). Założenie: prawie każdy atrybut ma swój mnożnik, który jest modyfikowany przez bonus.
W dobry sposób to robię? (tak dodatkowo pytam ;) może jest sprytniejszy sposób)
Przejdę teraz do kłopotu związanego ze zmiennymi globalnymi.
Projekt jest podzielony na wiele plików.
Stworzyłem sobie plik "efekty.h", żeby przechowywać w nim mnożniki.
Załączyłem go do projektu, i do plików w których będzie używany.
Niestety gdy tworzę sobie zmienną np. "int X_PL_SPEED=1"(od razu nadaję jej podstawową wartość), i próbuję skompilować projekt, to w plikach w których ma zostać używa wyskakuje błąd linkera:
error LNK2005: "int X_PL_SPEED" (?X_PL_SPEED@@3HA) already defined in [nazwa_pliku].obj
Zaznaczę, że tam gdzie jest [nazwa_pliku], to jest to plik w którym plik "efekty.h" został zaincludowany.
Na koniec, linker opieprza mnie, że:
fatal error LNK1169: one or more multiply defined symbols found
Coś nie mogę sobie z tym jakoś poradzić, co robię nie tak? A może po prostu w zły sposób tworzę tą zmienną? Jeśli to ważne, mój kompilator: MS Visual C++ Express 2010