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:

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;
    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");
}
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
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;
    dd.d += n;
}
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
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 ?)
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.

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.