Bonjour

Je sais que les erreur d'operande == sont fréquente sur internet, mais même en cherchant, je n'arrive pas à résoudre ce problème... Peut être que je ne connait pas assez le c++ tout simplement
Mais voila, j'essaie de coder un moteur d'inférence en c++, pour cela j'ai une classe Rule dont le .h est le suivant:

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
#include "stdafx.h"
 
class Rule{
public:
	std::list<IFact> Premises;
	IFact conclusion;
	std::string Name;
	Rule::Rule(std::list<IFact> _premises,IFact _conclusion, std::string _name);
	std::list<IFact> getPremises(){return Premises;};
	IFact getConclusion(){return conclusion;};
	std::string getName(){return Name;};
	void setPremises(std::list<IFact> premises);
	void setConclusion(IFact _conclusion);
	void setName(std::string _name);
	bool Rule::operator==(const Rule &other) const;
};
Le .cpp est le suivant:

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
#include "stdafx.h"
 
void Rule::setPremises(std::list<IFact> _premises){
	Premises=_premises;
}
void Rule::setConclusion(IFact _conclusion){
	conclusion=_conclusion;
}
void Rule::setName(std::string _name){
	Name=_name;
}
Rule::Rule(std::list<IFact> _premises,IFact _conclusion, std::string _name){
	Premises=_premises;
	conclusion=_conclusion;
	Name=_name;
}
	bool Rule::operator==(const Rule &other) const{
		return(Premises==other.Premises
			&&Name == other.Name
			&&conclusion==other.conclusion);
	}
J'ai commencé a surchargé l'operateur == parce que l'utilisation d'une list<Rule> et sa fonction remove m'obligeait d'en faire un. Toutefois une erreur apparait ici:'==' binaire*: aucun opérateur trouvé qui accepte un opérande de partie gauche de type 'const IFact' (ou il n'existe pas de conversion acceptable)
et l'erreur:'==' binaire*: aucun opérateur trouvé qui accepte un opérande de partie gauche de type 'const std::string'

Pour information voici IFact.h:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
#include "stdafx.h"
class IFact{
	public:
		virtual std::string getName();
		virtual void* getValue();
		virtual int getLevel();
		virtual void setLevel(int p);
		virtual bool isEquals(std::string);
};
Merci de m'apporter vos lumières éclairés^^. Et dans le cas ou vous avez des aides à m'apporter sur le moteur d'inférence, hésitez pas, je galère un peu. Mais je sors aussi du sujet.