Bonjour,
J'utilse 3 classes dans un programme de la mani�re suivante :
la class Task:
Elle poss�de un pointeur sur PreviousManager
La classe PreviousManager qui est une liste de pointeurs sur Previous:
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 class Task : public ProcessObject { protected: bool m_bIsExecuted; bool m_bResult; bool m_bLaunch; bool m_bIsLaunched; PreviousManager* m_pPrevious; public: Task(); ~Task(); // bool execute(){return true;}; // bool check() {return true;}; bool check(){return true;}; bool execute(){return true;}; bool getIsExecuted(); bool getResult(); bool getLaunch(); bool getIsLaunched(); };
et enfin la classe Previous:
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 #ifndef PREVIOUSMANAGER_H_ #define PREVIOUSMANAGER_H_ class PreviousManager { private: vector<Previous*> m_lstListPrev; public: PreviousManager(); virtual ~PreviousManager(); bool addPrev( Task* T, bool iscrit, bool cond) ; bool removePrev(Previous* p); bool checkCond(Previous * P); }; #endif /*PREVIOUSMANAGER_H_*/
ensuite pour les includes:
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 class Task; class Previous { private: Task* m_pT; bool m_bIsCriteria; bool m_bCond; public: Previous(); Previous (Task *T,bool iscrit, bool cond); ~Previous(); bool getIsCriteria(); bool getCond(); void setIsCriteria(bool b); void setCond(bool b); Task* getTask(); };
dans Task.cpp:
#include "Previous.h"
#include "PreviousManager.h"
#include "Task.h"
dans PreviousManager.cpp:
#include "Previous.h"
#include "PreviousManager.h"
et dans Previous.cpp:
#include "Previous.h"
Alors j'ai �t� oblig� de rajouter la ligne "class Task;" dans la classe Previous car sinon j'avais une boucle sur les includes. En effet un Task poss�de un PreviousManager qui est une liste de Previous qui eux m�me sont des Tasks particuli�res (j'esp�re que ca vous para�t clair)
Mon probl�me est dans la fonctionLa ligne en rouge me donne une erreur du type:
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12 bool PreviousManager::checkCond(Previous* P) { // si le Previous na pas de condition alors on retourne true if (!(P->getIsCriteria())) return true; if ((P->getCond())==((P->getTask())->getResult())) return true; else return false; }
Severity and Description
error: forward declaration of `struct Task' DIS Previous.h line 4
error: invalid use of undefined type `struct Task' DIS PreviousManager.cpp line 58
Je pense que la classe Previous n'a pas pris en compte le fait que la ligne "class Task" signifiait que la classe Task existe mais est d�fini� ailleurs. Elle la voit comme une struct.
Je sais pas si j'ai �t� assez clair, j'esp�re que certains d'entre vous sauront m'aid�.
Merci d'avance.
Partager