2016-06-18 6 views
-3

Auf outfile = fstream(filename); Dort zeigt mich , ich weiß nicht, wie ich es lösen, ich benutze clion, um es zu kompilieren, aber für Mac, kein Problem auf sieIch bin verwirrt, warum diese Linie mir den Fehler in PC zeigen, aber Mac kann damit arbeiten

class ErrorHandler{ 
private: 

    std::fstream outfile; 

public: 
    ErrorHandler(char const filename[]) { 

     outfile = fstream(filename); 

     outfile << filename << " opened" << endl; 
    } 

    ~ErrorHandler(){ 

    } 

    void warn(char const message[]){ 

     cout << message << endl; 

     outfile << message << endl; 

    } 


    void terminate(char const message[]){ 

     cout << message << endl; 

     outfile << message << endl; 

     exit(1); 

    } 
}; 

int main() { 

    ErrorHandler h("log.txt"); 

    h.warn("Error 10: this is your first warning"); 
    h.warn("Error 20: I warned you"); 
    h.terminate("Error 30: Told you so."); 

    return 0; 
} 
+0

Formatieren Sie Ihren Code ordnungsgemäß als Code. Es ist ein einzelner Klick auf eine Schaltfläche. –

+0

Kompilieren Sie auf PC unter mindestens C++ 11? – LogicStuff

+0

Die letzte Bearbeitung dieses Posts entfernte die eigentliche Fehlermeldung aus dem Hauptpost und fügt sie in den Code ein. –

Antwort

-1

Ihr Problem ist, dass Sie nicht ein fstream zu einem anderen zuweisen können, das ist genau das, was geschieht, wenn Sie es zuweisen.

Sie haben ein paar Optionen, aber die einfachste ist outfile als std::fstream*, zu erklären und dann in Ihrem Konstruktor:

outfile = new fstream(filename); 

Denken Sie daran, es in Ihrem destructor zu löschen.

+1

Es gibt wirklich keine Notwendigkeit für dynamische Zuordnung oder sogar Zeiger hier. – juanchopanza

+0

Vielen Dank für die Beantwortung meines Problems, aber mein Freund verwenden Mac, um genau die gleiche Codierung wie meine zu kopieren, es gibt keine Fehler, ich weiß nicht, warum es ein Fehler auf dem PC ist. Diese Kodierung, die es von meinem Professor gegeben hat, läuft er ist auch gut –

+0

@ user6482243 Es ist nicht gültig C++. Ich kann mir nicht vorstellen, wie dein Freund es kompilieren kann, aber vielleicht ist ihr Code anders. – juanchopanza