Ik ben een programma aan het schrijven op ubuntu in c++,
maar nu kwam ik gisteren een compiler error tijdens het compilen met g++ tegen waar ik echt geen snars van begrijp. Ik heb het zelfs terug gebracht naar skeleton code, maar de error blijft en ik begrijp echt niet wat er mis gaat.
Relevante code:
Als ik al het bovenstaande compile met:
krijg ik de volgende error:
Ik snap niet waarom hij de constructor van Grid aan wil roepen in de constructor van de AI class, ik heb op google al gezocht naar deze melding, maar dit heeft mij niet dichter bij een oplossing gebracht, dus probeer ik het hier.
maar nu kwam ik gisteren een compiler error tijdens het compilen met g++ tegen waar ik echt geen snars van begrijp. Ik heb het zelfs terug gebracht naar skeleton code, maar de error blijft en ik begrijp echt niet wat er mis gaat.
Relevante code:
C++: Grid.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| #ifndef GRID_H #define GRID_H class Grid { int ** level; int gridWidth; int gridHeight; public: Grid(int grid_width, int grid_height); ~Grid(void); void createGrid(void); void drawGrid(void); }; #endif |
C++: Grid.cpp
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
45
46
47
| #include <iostream> #include "Grid.h" using namespace std; Grid::Grid(int width, int height) { gridWidth = width; gridHeight = height; level = new int * [gridHeight]; for(int i = 0; i < gridHeight; i++) { level[i] = new int[gridWidth]; } } Grid::~Grid() { for(int i = 0; i < gridHeight; i++) { delete level[i]; } delete [] level; } void Grid::createGrid() { for(int j = 0; j < gridHeight; j++) { for(int i = 0; i < gridWidth; i++) { if(i == 0 || j == 0 || i == (gridWidth - 1) || j == (gridHeight - 1)) { level[j][i] = 1; } else { level[j][i] = 0; } } } } void Grid::drawGrid() { for(int i = 0; i < gridHeight; i++) { for(int j = 0; j < gridWidth; j++) { if(level[i][j] == 1) { cout << "#" ; } else { cout << " "; } } cout << "\n"; } } |
C++: AI.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| #ifndef AI_H #define AI_H #include "Vector.h" #include "Grid.h" class basicAI { public : basicAI(void); void setEnv(Grid l); void findRoute(Vector v); protected : Grid env; }; #endif |
C++: AI.cpp
1
2
3
4
5
6
7
8
9
| #include "AI.h" basicAI::basicAI(void) { // stuff } void basicAI::setEnv(Grid lev) { env = lev; } |
C++: main.cpp
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
| #include <stdio.h> #include <iostream> //#include "Vector.h" #include "Grid.h" #include "AI.h" using namespace std; int main() { Grid * level; basicAI * bot; level = new Grid(50,10); level->createGrid(); level->drawGrid(); bot = new basicAI(); //bot = setEnv(level); cout << "Done" << endl; delete level; delete bot; return 0; } |
Als ik al het bovenstaande compile met:
code:
1
| g++ *.cpp |
krijg ik de volgende error:
code:
1
2
3
4
| AI.cpp: In constructor 'basicAI::basicAI()': AI.cpp:3: error: no matching function for call to 'Grid::Grid()' Grid.h:11: note: candidates are: Grid::Grid(int, int) Grid.h:5: note: Grid::Grid(const Grid&) |
Ik snap niet waarom hij de constructor van Grid aan wil roepen in de constructor van de AI class, ik heb op google al gezocht naar deze melding, maar dit heeft mij niet dichter bij een oplossing gebracht, dus probeer ik het hier.
... MMORPG Addict.