Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Undefined reference?

Ostatnio zmodyfikowano 2015-03-21 15:23
Autor Wiadomość
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:
C/C++
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:
C/C++
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.
P-128848
aksen
» 2015-03-21 04:02:40
wrzuć kod który próbujesz skompilować
P-128849
akwes
» 2015-03-21 07:53:17
Posiadasz jedynie deklarację zmiennej statycznej w klasie. Taka zmienna wymaga również definicji w pliku *.cpp.

C/C++
int Hero::dmg = 0;
P-128850
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.
P-128852
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
P-128853
Brunon3
» 2015-03-21 08:43:57
@up:

Przepraszam więc bardzo wszystkich.
Nie wiedziałem tego. ;)

-BD.
P-128855
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 (:
P-128877
« 1 »
  Strona 1 z 1