Undefined reference?
Ostatnio zmodyfikowano 2015-03-21 15:23
Criss Temat założony przez niniejszego użytkownika |
Undefined reference? » 2015-03-21 03:46:33 Problem dotyczy tych pośrednio tych dwóch mini funkcji (w zasadzie to metod): Definicje w pliku .cpp: void Hero::weapon_on( int w ) { if( dmg == 0 ) dmg += w; }
void Hero::weapon_off( int w ) { if( dmg > 0 ) dmg -= w; }
Ich deklaracje w oddzielnym pliku .h: class Hero { static int dmg; public: void weapon_on( int w ); void weapon_off( int w ); };
Kompilator wyrzuca 4 (tyle ile odniesień do dmg w funkcjach) błędy odnośnie pliku .cpp - "undefined reference to 'Hero::dmg' ". W tym samym pliku .h są tez inne klasy z metodami z którymi już linker problemów nie ma. Probowalem tez zamieniac kolejnosc includa pliku .h do .cpp bo, jak kiedyś zauważyłem, ma to jakieś znaczenie. Niestety żadnych zmian. |
|
aksen |
» 2015-03-21 04:02:40 wrzuć kod który próbujesz skompilować
|
|
akwes |
» 2015-03-21 07:53:17 Posiadasz jedynie deklarację zmiennej statycznej w klasie. Taka zmienna wymaga również definicji w pliku *.cpp. |
|
Brunon3 |
» 2015-03-21 08:30:07 Ja tutaj widzę, że próbujesz się odwołać do statycznej zmiennej, w niestatycznej metodzie, a tak nie można.
EDIT:
Wklej log kompilacji. (Tylko nie zapomnij o znacznikach). ;)
-BD. |
|
akwes |
» 2015-03-21 08:37:10 Ja tutaj widzę, że próbujesz się odwołać do statycznej zmiennej, w niestatycznej metodzie, a tak nie można.
|
Oczywiście, że można... http://ideone.com/Z48vhR |
|
Brunon3 |
» 2015-03-21 08:43:57 @up:
Przepraszam więc bardzo wszystkich. Nie wiedziałem tego. ;)
-BD. |
|
Criss Temat założony przez niniejszego użytkownika |
» 2015-03-21 15:23:11 Posiadasz jedynie deklarację zmiennej statycznej w klasie. Taka zmienna wymaga również definicji w pliku *.cpp. |
To załatwiło sprawę. Nie pomyslalem o tym zupelnie pewnie dlatego że reszta klas ma definiowane wartosci atrybutów w konstruktorach. Dziekuje bardzo za tak szybką pomoc (: |
|
« 1 » |