Russian Qt Forum
Февраля 20, 2025, 22:14 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [Решено]error: 'defaultHealthCalc' is not a member of 'GameStuff'  (Прочитано 4784 раз)
8Observer8
Гость
« : Апреля 26, 2014, 17:59 »

Здравствуйте!

Помогите, пожалуйста, решить проблему. Выдаётся сообщение:
Цитировать
GameCharacter.h:13: error: 'defaultHealthCalc' is not a member of 'GameStuff'
         explicit GameCharacter( std::string name, HealthCalcFunc hcf = GameStuff::defaultHealthCalc )

GameCharacter.h
Код
C++ (Qt)
#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
Код
C++ (Qt)
#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
Код
C++ (Qt)
#include "functionsForHealthCalc.h"
 
namespace GameStuff {
 
   int defaultHealthCalc( const GameCharacter& gc ) {
       return 1;
   }
}
 
« Последнее редактирование: Апреля 27, 2014, 07:05 от 8Observer8 » Записан
8Observer8
Гость
« Ответ #1 : Апреля 27, 2014, 07:07 »

Решение вот здесь подсказали: ссылка

Цитировать
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.
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #2 : Апреля 27, 2014, 07:42 »

Вообще-то вам все это решили еще 2 месяца назад, здесь: http://www.prog.org.ru/index.php?topic=26549.msg191013#msg191013
Записан
8Observer8
Гость
« Ответ #3 : Апреля 27, 2014, 07:59 »

Я думал дежа вю Улыбающийся Было подозрение, что это уже было Улыбающийся Я даже пробовал в профиле искать, а тут нет списка тем. Как Вы нашли?
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #4 : Апреля 27, 2014, 08:02 »

Как Вы нашли?
Набрал в поиске по форуму: GameCharacter
Записан
8Observer8
Гость
« Ответ #5 : Апреля 27, 2014, 08:03 »

А, понятно. Жаль, что здесь нет списка тем в профиле Грустный
Записан
8Observer8
Гость
« Ответ #6 : Апреля 27, 2014, 21:22 »

Получается, что компилятор сначала схватил файл functionsForHealthCalc.cpp, где было объявление #include "GameCharacter.h" А в файле "GameCharacter.h" ещё нет к этому моменту объявления функции "GameStuff::defaultHealthCalc". Но ведь там же есть включение #include "functionsForHealthCalc.h" Я так и не понял, почему не работает если в файле functionsForHealthCalc.cpp написать #include "GameCharacter.h"?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.074 секунд. Запросов: 22.