Bonjour,
J'utilse 3 classes dans un programme de la manière suivante :
la class Task:
Elle possède un pointeur sur PreviousManager
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();
};
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
 
#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_*/
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
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();
};
ensuite pour les includes:
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 fonction
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;
}
La ligne en rouge me donne une erreur du type:
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.