c ++ чтение / запись класса из / в двоичный файл

Мне нужно записать класс в двоичный файл, а затем мне нужно прочитать его обратно.

я имеюTriangle а такжеBinaryFile классы и некоторые другие классы. Я не уверен, что пишу неправильно или читаю неправильно. При чтении возникает ошибка. После отладки я думаю, что он получает неподходящие данные для моих личных переменных. Я буду очень рад, если кто-нибудь даст мне несколько советов о том, как заставить его работать должным образом.

Я не был уверен, стоит ли мне вставлять весь код или нет, поэтому я дам вам небольшой фрагмент кода. На всякий случай вот ссылка на скачивание моего исходного кода:

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

Я новичок в программировании и плохо говорю по-английски, поэтому заранее прошу прощения за свои ошибки.

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;
    }
};

Ответы на вопрос(3)

Ваш ответ на вопрос