c ++ Klasse zum Lesen / Schreiben von / nach Binärdatei

Ich muss eine Klasse in eine Binärdatei schreiben und dann muss ich sie zurücklesen.

Ich habeTriangle undBinaryFile Klassen und einige andere Klassen. Ich bin mir nicht sicher, ob ich falsch schreibe oder falsch lese. Beim Lesen tritt ein Fehler auf. Nach dem Debuggen denke ich, dass es unangemessene Daten für meine privaten Variablen bekommt. Ich würde mich sehr freuen, wenn mir jemand einen Rat geben könnte, wie es richtig funktioniert.

Ich war mir nicht sicher, ob ich den gesamten Code einfügen sollte oder nicht, deshalb werde ich Ihnen einen kurzen Codeausschnitt geben. Nur für den Fall, hier ist ein Download-Link für meinen Quellcode:

https: //my.pcloud.com/publink/show? code = XZJ7CYZbsLWLglqV5p83csijcEUTFqqpM3k

Ich bin ein Neuling in der Programmierung und spreche nicht sehr gut Englisch. Ich entschuldige mich im Voraus für meine Fehler.

class Point
{
private:
    int x;
    int y;
};

class Figure
{
private:
    string name;
    string type;
};

class Triangle: public Figure
{
private:
    Point p1, p2, p3;
};

class BinaryFile
{
private:
    string FileName;
    fstream File;
public:
    //...
    void AddNewFigure(istream& stream)
    {       
        File.open(this->FileName, ios::binary | ios::app);
        if(!this->File)
        {
            cerr<<"File error <"<<this->FileName<<">\n";
            exit(1);
        }
        Triangle fig;
        fig.MakeNewFigure(stream);
        File.write((char*)&fig, sizeof(Triangle));
        File.close();
    }

    Triangle GetTriangle()
    {
        Triangle trig;
        Point p;
        string str(""); int x(0);
        File.open(this->FileName, ios::binary | ios::in);
        if(!this->File)
        {
            cerr<<"File error <"<<this->FileName<<">\n";
            exit(1);
        }
        File.read((char*)&trig, sizeof(Triangle));
        File.close();
        return trig;
    }
};

Antworten auf die Frage(6)

Ihre Antwort auf die Frage