PDA

View Full Version : 'defaultHealthCalc' is not a member of 'GameStuff'



8Observer8
26th April 2014, 19:17
Hello!

Why I received this message:


GameCharacter.h:13: error: 'defaultHealthCalc' is not a member of 'GameStuff'
explicit GameCharacter( std::string name, HealthCalcFunc hcf = GameStuff::defaultHealthCalc )


There are all my files. Please, help me!

GameCharacter.h


#ifndef GAMECHARACTER_H
#define GAMECHARACTER_H

#include <string>
#include "functionsForHealthCalc.h"

namespace GameStuff {

class GameCharacter {
public:
typedef int (*HealthCalcFunc)(const GameCharacter&);

explicit GameCharacter( std::string name, HealthCalcFunc hcf = GameStuff::defaultHealthCalc )
{
}

};
}

#endif // GAMECHARACTER_H


functionsForHealthCalc.h


#ifndef FUNCTIONS_FOR_HEALTHCALC_H
#define FUNCTIONS_FOR_HEALTHCALC_H

#include "GameCharacter.h"

namespace GameStuff {

class GameCharacter;

int defaultHealthCalc( const GameCharacter& gc );
}

#endif // FUNCTIONS_FOR_HEALTHCALC_H


functionsForHealthCalc.cpp


#include "functionsForHealthCalc.h"

namespace GameStuff {

int defaultHealthCalc( const GameCharacter& gc ) {
return 1;
}
}


Question.pro


SOURCES += \
main.cpp \
functionsForHealthCalc.cpp

HEADERS += \
GameCharacter.h \
functionsForHealthCalc.h


main.cpp


#include <iostream>

int main() {

return 0;
}

ChrisW67
26th April 2014, 21:38
Try removing line 4 from functionsForHealthCalc.h. Line 8 makes the include is unnecessary

When the compiler is given functionsForHealthCalc.cpp to compile it includes GameCharacter.h before it declares defaultHealthCalc(). GameCharacter.h tries to reference defaultHealthCalc() which has not yet been declared.

8Observer8
27th April 2014, 05:01
Thank you very much! :)