2016-05-17 11 views
0

Ich versuche, infeasible in eine Textdatei zu exportieren, jedoch kompiliert der Code nicht mit dem folgenden Syntaxfehler: no match for call to '(Std :: list) (std :: list :: iterator &) '|C++: Ausgabedaten, die im Listencontainer in einer Textdatei gespeichert werden

list<solution> feasible, infeasible; 

    for(list<solution>::iterator it = merged.begin(); it != merged.end(); it++) { 
     mutation(*it, input); 
     if(it->feasible) 
      feasible.push_front(*it); 
     else { 
      infeasible.push_front(*it); 
      ofstream outfile; 
      outfile.open("output.txt"); 
      for(list<solution>::iterator it2 = infeasible.begin(); it2 != infeasible.end(); it2++) 
       outfile<<infeasible(*it2)<<std::endl; 
      } 
     } 
+2

Welche Fehlermeldung erhalten Sie? –

+0

Bitte geben Sie einen [MCVE] an. –

+0

Sie scheinen die Datei jedes Mal neu zu schreiben, wenn Sie etwas Unmögliches finden. Ist das beabsichtigt? Warum? –

Antwort

0

Vorbemerkung: für jedes Element in merged, schreiben Sie eine neue Datei mit dem gleichen Namen, die vorherigen überschrieben werden. Wenn Sie dies vermeiden wollen und immer die neue Ausgabe an das Ende der gleichen Datei hinzufügen, verwenden:

 outfile.open("output.txt", ios::app); 

Unter der Annahme, dass Klasse solution enthält mindestens ein Mitglied feasible, dass Funktion mutation() richtig definiert ist, dass merged ist ein list<solution> und dass Sie einen Inserter für solution definiert haben:

ostream& operator<< (ostream& os, const solution &s) { 
    return os<<"??"; //t.b.d. 
} 

Dann Sie Ihren Code leicht zu m ändern könnte ake it compile:

for(auto it = merged.begin(); it != merged.end(); it++) { 
     mutation(*it, input); 
     if(it->feasible) 
      feasible.push_front(*it); 
     else { 
      infeasible.push_front(*it); 
      ofstream outfile; 
      outfile.open("output.txt", ios::app); 
      for(auto it2 = infeasible.begin(); it2 != infeasible.end(); it2++) 
       outfile<<*it2<<std::endl; // use directly *it2 
     } 
    } 
+0

Es kompiliert, aber ich kann nicht scheinen, um "os" einen Wert zuzuweisen, um in eine Datei output.txt geschrieben zu werden. Derzeit druckt es "??" wie erwartet. – Far