Russian Qt Forum
Май 04, 2024, 15:04 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [Решено]error: 'defaultHealthCalc' is not a member of 'GameStuff'  (Прочитано 4446 раз)
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

Сообщений: 4349



Просмотр профиля
« Ответ #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

Сообщений: 4349



Просмотр профиля
« Ответ #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.103 секунд. Запросов: 23.