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:
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 #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; };
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)
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); }
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:
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.
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); };
Partager