Bonjour, actuellement je suis sur un projet C qui nécessite de créer deux structure mutuelle.

Le but final est de construire un graphe simplement orienté.

Voici où se trouve probablement l'erreur.


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
typedef struct piece;
 
typedef struct cell{
    piece* elt;
    struct cell* suiv;
}Cells;
 
typedef struct piece{
    int reference;
    double prix;    
    Cells* compisition;
}Piece;
Le but est donc de définir une cellule qui est une liste chainée de piece. Et une piece qui peut etre simple ou composite. Dans le cas d'une piece simple composition est à null et dans le cas d'une piece composite, elle contient des cellules de pieces simples ou composites

Le problème est qu'apparemment le compilateur n'arrive pas à identifier l'attribut elt de Cells comme étant une piece.

puisque ce simple code par exemple ne compile pas!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
// affiche la reference et le prix d une piece de base
void afficherPieceBase(Piece* elt)
{
    printf("ref: %d\t prix: %lf\n", elt->reference, elt->prix);
}
 
// affiche la reference et le prix d une piece compisite
void afficherPieceComposite(Piece* elt)
{
        printf("ref: %d\t prix compisition: %lf\t prix total: %lf\n", elt->reference, elt->prix, calculPrixComposite(elt));
}
Donc voilà pouvez vous m'aider pour réaliser cette déclaration? Ou donner d'autres idées je suis preneur.