title: c2678 binary '==' no operator found which takes a left-hand operand of type
body: <p>it has been for several days that I kept on my problem with no answer...</p>
  
  <p>I'm trying to search an item in order to modify it. With a "list" I need to overload the operator== but I don't understand my mistake. Can you please tell me how can I solve this ?</p>
  
  <pre><code>class Nation{
  private :
      short continent;
      unsigned int population, superficie;
      string pays, ville;
  public :
  list&lt;Nation&gt;    lireRemplir(list&lt;Nation&gt;liste, const char nomALire[]);
  
  Nation(short continent, unsigned int population, unsigned int superficie, string pays, string ville) {
      ..... // ok
      }
  Nation(){};
  void modifierContinent(list&lt;Nation&gt; liste, string nomPays, short nouveauContinent);
  bool operator == (Nation &amp;); //?
  
  };
  
  bool Nation::operator == (Nation &amp; autre) {
      return this-&gt;pays == autre.pays;
  }
  
  void modifierContinent(list&lt;Nation&gt; liste, string nomPays, short nouveauContinent)
  {
      //Nation uneNation(0,0,0,nomPays,"");
      for (list&lt;Nation&gt;::iterator il = liste.begin(); il != liste.end(); il++)
      {
          if (*il == nomPays){ cout &lt;&lt; "found!"; }    
      }
  }
  
  int main()
  {
      list&lt;Nation&gt;liste;
      liste=lireRemplir(liste, "Nation.txt"); //hidden but working
      modifierContinent(liste, "FRANCE", 5);
  }
  </code></pre>