Clase de lectura / escritura de c ++ desde / a archivo binario

Necesito escribir una clase en un archivo binario, y luego necesito volver a leerlo.

yo tengoTriangle yBinaryFile clases y algunas otras clases. No estoy seguro si estoy escribiendo incorrectamente o leyendo incorrectamente. Se produce un error al leer. Después de la depuración, creo que obtiene datos inapropiados para mis variables privadas. Me alegraría mucho si alguien me puede dar algunos consejos sobre cómo hacer que funcione correctamente.

No estaba seguro de si debía pegar todo el código o no, así que le daré un pequeño fragmento de código. Por si acaso, aquí hay un enlace de descarga para mi código fuente:

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

Soy un novato en programación y no hablo inglés muy bien, así que me disculpo de antemano por mis errores.

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

Respuestas a la pregunta(3)

Su respuesta a la pregunta