Salut !

En souhaitant réaliser un Sudoku je suis tombé sur une erreur que je n'arrivais pas à comprendre.
J'ai tout de même réussi à localiser où se trouve le souci et je l'ai extrait du projet pour essayer de le résoudre plus facilement.

Voilà comment je peux illuster le souci. J'essaie de faire ceci :

Soit une classe A qui a pour attribut un pointeur sur une instance de la classe B.
Soit une classe B qui a pour attribut un pointeur sur une instance de la classe A.

Ce qui donne les fichiers suivant : A.h, A.cpp, B.h et B.cpp
Et voilà leur contenu :

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
// FICHIER A.h
#ifndef A_H
#define A_H
 
#include "B.h"
 
class A
{
	private:
		B* m_b;
 
	public:
		A();
};
 
#endif
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
// Fichier A.cpp
#include <iostream>
 
using namespace std;
 
#include "A.h"
 
A::A() : m_b(NULL)
{
 
}
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
// Fichier B.h
#ifndef B_H
#define B_H
 
#include "A.h"
 
class B
{
	private:
		A* m_a;
 
	public:
		B();
};
 
#endif
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
// Fichier B.cpp
#include <iostream>
 
using namespace std;
 
#include "B.h"
 
B::B() : m_a(NULL)
{
 
}
Voilà les erreurs obtenues lors des compilations :
g++ -Wall -c A.cpp
In file included from A.h:4:0,
from A.cpp:5:
B.h:9:3: error: ‘A’ does not name a type
g++ -Wall -c B.cpp
In file included from B.h:4:0,
from B.cpp:5:
A.h:9:3: error: ‘B’ does not name a type
Pourriez vous m'expliquer pourquoi cela plante ?
Merci davance.
SmallFitz.