Bonjour à tous,
dans le cadre d'un projet personnel j'ai besoin de passer un struct dans une fonction récursive.
Je me suis donc renseigné sur la marche à suivre et en m'inspirant du livre "Programmation Principes et pratique avec C++" de Bjarne Stroustrup j'ai obtenu ce code qui fonctionne et qui me permet d'ores déjà de passer un struc à une fonction:
Le problème est que lorsque j'essaye de placer les fonctions void init_day et void add_day dans un header le main devient:
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 #include "stdafx.h" #include <iostream> using namespace std; struct Date{ int y; int m; int d; Date* precedent; }; void init_day(Date& dd, int y, int m, int d) { dd.y = y; dd.m = m; dd.d = d; } void add_day(Date& dd, int n) { dd.precedent = ⅆ dd.d += n; } int _tmain(int argc, _TCHAR* argv[]) { Date today; init_day(today, 12, 24, 2005); add_day(today, 1); cout << today.y; system("pause"); }
et lorsque je compile le code, Visual Studio me renvoi ceci:
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 #include "stdafx.h" #include <iostream> #include "ajouter.h" #include "initialiser.h" using namespace std; struct Date{ int y; int m; int d; Date* precedent; }; void add_day(Date& dd, int n); void init_day(Date& dd, int y, int m, int d); int _tmain(int argc, _TCHAR* argv[]) { Date today; init_day(today, 12, 24, 2005); add_day(today, 1); cout << today.y; system("pause"); } //dans initialiser.h void init_day(Date& dd, int y, int m, int d) { dd.y = y; dd.m = m; dd.d = d; } //dans ajouter.h void add_day(Date& dd, int n) { dd.precedent = ⅆ dd.d += n; }
A partir de cette instant j'ai tout essayé, placer le struct dans les deux fichiers .h, placer le struct dans un .h à part et mettre un include dans chacun des header des deux fonctions et bien d'autre choses. Tout ça ne marche pas plus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 1>c:\users\marville\documents\visual studio 2013\projects\consoleapplication3\consoleapplication3\ajouter.h(1): error C2065: 'Date' : identificateur non déclaré 1>c:\users\marville\documents\visual studio 2013\projects\consoleapplication3\consoleapplication3\ajouter.h(1): error C2065: 'dd' : identificateur non déclaré 1>c:\users\marville\documents\visual studio 2013\projects\consoleapplication3\consoleapplication3\ajouter.h(1): error C2062: type 'int' inattendu 1>c:\users\marville\documents\visual studio 2013\projects\consoleapplication3\consoleapplication3\ajouter.h(2): error C2143: erreur de syntaxe : absence de ';' avant '{' 1>c:\users\marville\documents\visual studio 2013\projects\consoleapplication3\consoleapplication3\ajouter.h(2): error C2447: '{' : en-tête de fonction manquant (liste formelle à l'ancien format ?) 1>c:\users\marville\documents\visual studio 2013\projects\consoleapplication3\consoleapplication3\initialiser.h(1): error C2065: 'Date' : identificateur non déclaré 1>c:\users\marville\documents\visual studio 2013\projects\consoleapplication3\consoleapplication3\initialiser.h(1): error C2065: 'dd' : identificateur non déclaré 1>c:\users\marville\documents\visual studio 2013\projects\consoleapplication3\consoleapplication3\initialiser.h(1): error C2062: type 'int' inattendu 1>c:\users\marville\documents\visual studio 2013\projects\consoleapplication3\consoleapplication3\initialiser.h(2): error C2143: erreur de syntaxe : absence de ';' avant '{' 1>c:\users\marville\documents\visual studio 2013\projects\consoleapplication3\consoleapplication3\initialiser.h(2): error C2447: '{' : en-tête de fonction manquant (liste formelle à l'ancien format ?)
Je ne comprends vraiment pas ce qui coince je ne fait que passer mes fonctions dans un header et ça ne marche plus.
Pourriez-vous m'aider?
Si vous avez des questions je suis disponible. Merci encore.
Partager