2017-05-23 3 views
0

programmeur Sleepy (auto - acclamé) ont besoin d'aideErreur: 'une classe' ne nomme pas un type. comment résoudre cela?

#ifndef GAME_H 
#define GAME_H 
#include <iostream> 
#include "snake.h" 
#include "food.h" 
#define MAX_WIDTH 20 
#define MAX_HEIGHT 20 

class game 
{ 
    public: 
     game(); 
     static void createBoard(); 
     int gameStart(); 
     bool gameChecker(); 

    protected: 
     food apple; 
     bool gameOver = false; 
     snake python; 
     int gameSpeed = 250; 

    private: 
}; 

#endif // GAME_H 

fichier d'en-tête est appelé plus haut game.h

Chaque fois que je tente de compiler le projet, il montre erreur "erreur: « nourriture » ne nomme pas un type "

nourriture est une autre classe que j'ai inclus dans ce fichier d'en-tête trop

#include 'food.h' 

mais l'erreur persiste toujours. J'ai aussi essayé le food.h dans le fichier .cpp du jeu mais toujours pas d'espoir.

c'est le fichier food.h dans le cas où vous en avez besoin

#ifndef FOOD_H 
#define FOOD_H 
#include "game.h" 
#include "snakeFragment.h" 
#include <stdlib.h> 
#include <time.h> 

class food: public snakeFragment 
{ 
    public: 
     food(); 
     int foodPlace(); 
     int printFood(); 

    protected: 
     char symbol = '*'; 

    private: 
}; 

#endif // FOOD_H 

J'utilise Code :: Blocks.

choses que je l'ai fait

  1. Reparse le projet

  2. Reconstruire l'ensemble du projet

  3. Réécrire la classe à nouveau

  4. l'ordinateur portable

    Redémarrer
  5. code blocs ::

    Redémarrage
  6. à condition que le chemin d'accès dans les paramètres du compilateur -> répertoires de recherche

mais aucun travaillé. Je ne sais pas quel est le problème?

Merci à l'avance

Répondre

0

Vous avez une dépendance circulaire. La nourriture comprend le jeu et le jeu comprend la nourriture.

Puisque vous avez correctement utilisé les gardes d'en-tête, au lieu de s'inviter indéfiniment l'un l'autre, l'un est simplement inclus avant l'autre. Il est arrivé que la définition du jeu soit incluse en premier, donc il ne sait pas que la nourriture est un type.

Solution: Ne pas avoir de dépendances circulaires. Il semble que la classe alimentaire n'utilise rien du jeu, donc cela devrait être facile à réaliser. Ensuite, divisez votre en-tête en plus petits morceaux de sorte que la nourriture ne dépend plus de tout en-tête qui dépend de la nourriture.

+0

mais il y a quelques macros dans game.h que j'ai besoin d'utiliser dans food.h. Je n'ai pas le choix. Que puis-je faire? –

+0

Voir la dernière modification. – user2079303

+0

gracias! ça a marché .. je ne savais pas à propos de ça .. –