Bonjour,
je suis en train de développer un petit solveur de labyrinthe en essayant d'être un peu générique afin de mieux me familiariser avec le c++ (je viens plutôt de java). Or je tombe sur une petite série d'erreur que je suis incapable de comprendre, même après recherche sur internet etc.
Ce qui me semble aussi étrange, c'est qu'en remplaçant le Map par Cell, ce type de déclaration ne semble plus poser problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Erreur 1 error C2039: 'Map' : n'est pas membre de 'MazeSolver' c:\users\medrimonia\documents\visual studio 2010\projects\mazesolver\mazesolver\Maze.h 38 1 MazeSolver Erreur 2 error C2143: erreur de syntaxe : absence de ';' avant '*' c:\users\medrimonia\documents\visual studio 2010\projects\mazesolver\mazesolver\Maze.h 38 1 MazeSolver Erreur 3 error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque : C++ ne prend pas en charge int par défaut c:\users\medrimonia\documents\visual studio 2010\projects\mazesolver\mazesolver\Maze.h 38 1 MazeSolver Erreur 4 error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque : C++ ne prend pas en charge int par défaut c:\users\medrimonia\documents\visual studio 2010\projects\mazesolver\mazesolver\Maze.h 38 1 MazeSolver Erreur 5 error C2061: erreur de syntaxe : identificateur 'Map' c:\users\medrimonia\documents\visual studio 2010\projects\mazesolver\mazesolver\Maze.h 40 1 MazeSolver Erreur 6 error C2065: 'map' : identificateur non déclaré c:\users\medrimonia\documents\visual studio 2010\projects\mazesolver\mazesolver\Maze.h 41 1 MazeSolver Erreur 7 error C2065: 'm' : identificateur non déclaré c:\users\medrimonia\documents\visual studio 2010\projects\mazesolver\mazesolver\Maze.h 41 1 MazeSolver Erreur 8 error C2065: 'map' : identificateur non déclaré c:\users\medrimonia\documents\visual studio 2010\projects\mazesolver\mazesolver\Maze.h 45 1 MazeSolver
Voici le contenu des trois fichiers incriminés
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 #ifndef MAZE_H #define MAZE_H #include <ostream> #include "boost/graph/adjacency_list.hpp" #include "Cell.h" #include "Edge.h" #include "Map.h" namespace MazeSolver{ typedef boost::adjacency_list< boost::vecS, boost::vecS, boost::undirectedS, Cell, Edge> MazeGraph; typedef MazeGraph::vertex_descriptor cell_id; typedef MazeGraph::edge_descriptor edge_id; struct found_goal{}; class Maze { private : MazeGraph graph; Map * map; // C'est cette instruction qui pose problème public: Maze(Map * m){ map = m; }; virtual std::ostream & prettyPrint(std::ostream & out) const{ return out << map; }; friend std::ostream &operator<<(std::ostream &out, Maze const &m); }; } #endif
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 #ifndef MAP_H #define MAP_H #include "Maze.h" namespace MazeSolver{ class Map{ protected : std::vector<Cell> cells; public : virtual ~Map() = 0; // shouldn't be used to ensure encapsulation // Return the cell at the specified position virtual Cell & getCell(float x, float y) const = 0; virtual bool isValid(float x, float y) const = 0; // Return the id of the cell at the specified position virtual int getCellID(float x, float y) const = 0; virtual std::ostream & prettyPrint(std::ostream &out) const; friend std::ostream & operator<<(std::ostream &out, Map const &m); }; } #endifSi l'un d'entre vous a une piste, je lui en serais très reconnaissant. N'hésitez pas à émettre des critiques non plus, mon but étant réellement de progresser en c++, savoir ce que je fais mal est important.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 #ifndef CELL_H #define CELL_H namespace MazeSolver{ class Cell{ }; } #endif
Partager