Bonjour tout le monde!
J'ai un devoir à faire pour l'école, nous devons développer un composant pile qui est ensuite utilisé par tpile, tpile étant le composant de test qui vérifie que la pile fonctionne correctement. J'espère que vous me suivez. Je vais sauter les détails, mais en gros, j'ai pile.h qui ressemble à ceci :
#ifndef PILE_H
#define PILE_H
#include <iostream>
typedef struct pPile_t *pPile;
#endif
Ensuite j'ai mon pile.cpp qui contient ceci :
struct pPile_t
{
struct pPile_t *next;
struct pPile_t *prev;
float val;
pPile_t *PILEinit (pPile_t *pile); // Initialise une pile, retourne le pointeur.
int PILEpush (pPile_t pile, int val); // Ajoute une valeur.
int PILEpop (pPile_t pile, int &val); // Enlève une valeur.
int PILEtop (pPile_t pile, int &val); // Retourne une valeur.
int PILEempty (pPile_t pile); // Retourne un si la pile est vide.
pPile_t *PILEdelete (pPile_t *pile); // Détruit la pile, retourne un pointeur null.
int PILEprint (pPile_t pile, FILE *ListFile); // Imprime le contenu de la pile.
};
pPile_t *top; //variable globale qui pointe sur le sommet de la pile
pPile_t* pPile_t::PILEinit(pPile_t *pile) // Initialise une pile, retourne le pointeur.
{ ...}
int pPile_t::PILEpush(pPile_t pile, int val) // Ajoute une valeur.
{...}
int pPile_t::PILEpop(pPile_t pile, int &val) // Enlève une valeur.
{...}
int pPile_t::PILEtop(pPile_t pile, int &val) // Retourne une valeur.
{...}
int pPile_t::PILEempty(pPile_t pile) // Retourne un si la pile est vide.
{...}
pPile_t* pPile_t::PILEdelete(pPile_t *pile) // Détruit la pile, retourne un pointeur null.
{...}
int pPile_t::PILEprint(pPile_t pile, FILE *ListFile) // Imprime le contenu de la pile.
{...}
Bon je n'ai pas mis le code à l'intérieur des fonctions par soucis de clarté parce que ma question ne porte pas là-dessus de toute façon. Ensuite, j'ai tpile.cpp qui contient #include "C:\Pile\pile.h" ainsi que du code. Ma question est la suivante. Lorsque j'écris ceci :
pPile_t pile;
dans tpile.cpp, il me donne l'erreur suivante : error C2079: 'pile' uses undefined struct 'pPile_t'. Je suis un peu débutante par rapport aux pointeurs et ce genre de truc, et quand j'écris
pPile_t *pile;
il ne me donne pas d'erreur et je ne comprends pas trop pourquoi. Cependant, même si je déclare ma pile comme un pointeur, j'ai quand même l'erreur error C2228: left of '.PILEinit' must have class/struct/union type quand j'écris pile = pile.PILEinit(pile);
Donc finalement je suis incapable d'accéder aux fonctions de ma pile et je ne comprends pas pourquoi. Je vais continuer d'y réfléchir, et si quelqu'un pouvait m'aider ce serait très apprécié. J'espère que mon message a été suffisament clair, je peux vous envoyer le code source si nécessaire. Merci d'avance!!
Claudie