Dynamic objects and file processing

I am performing an assignment that requires processing files in C ++. I focused on how to write and then read dynamically created objects. ie with a base class pointer that points to an object of the derived class. and we don’t know which object is stored there at any particular moment in time. The entire assignment is long enough to be available here, but I have developed similar simple code to develop my question.

                    #include <string>
    #include <conio.h>
    #include <iostream>
    #include <vector>
    #include <fstream>

    using namespace std;

    class MAss
    {
    private:

    public:
        int age;
        string name;

        MAss();
        virtual void print();

         friend ofstream & operator << (ofstream & out, MAss & obj);
         friend ifstream & operator >> (ifstream & in, MAss & obj);
    };


    void MAss :: print()
    {
        cout<<endl<<"age = " << age;
        cout<<endl;
        cout<<"name = " <<name;
    }


    MAss :: MAss()
            :age(10)
            , name("Random")
        {}

    ofstream & operator <<  (ofstream & out, MAss & obj)
    {
        out<<obj.age;
        out<<" | " <<obj.name<<endl;
        return out;
    }


    ifstream & operator >> (ifstream & in, MAss & obj)
    {
        string temp;
        in>>obj.age;
        in>>temp;
        in>>obj.name;
        return in;
    }





    class Bass : public MAss
    {
    public:

        int reg;
        Bass();

        void print();

         friend ofstream & operator << (ofstream & out, Bass & obj);
        friend ifstream & operator >> (ifstream & in, Bass & obj);

    };

    Bass ::Bass()
        : reg(1)
    {}


    void Bass :: print()
    {
        MAss ::print();
        cout<<endl<<"REG = " <<reg;
    }

    ofstream& operator<<(ofstream& f, Bass& obj)
    {
        MAss & a = obj;

        f<<obj.reg<<" | ";

        f<<a;
        return f;
    }



    ifstream& operator>>(ifstream& f, Bass& obj)
    {
        string temp;
        MAss & a = obj;

        f>>obj.reg;
        f>> temp;
        f>>a;
        return f;
    }           




        void main ()
        {
            vector <MAss*> b(6);
            cout<<endl<<b.size();
            ofstream o("E:\\A.txt");

            for(int i=0; i<b.size();i++)
                b[i] = new Bass;

            b[0][0].age =1;
            b[0][0].name = "Jack";

            b[1][0].age =2;
            b[1][0].name = "Jill";


            b[2][0].age =3;
            b[2][0].name = "Jane";

            b[3][0].age =1;
            b[3][0].name = "Tom";


            b[4][0].age =2;
            b[4][0].name = "Phill";


            b[5][0].age =3;
            b[5][0].name = "Bone";


            for (int i=0; i<b.size(); i++)
            {
                o << b[i][0];
            }

            o.close();



            ifstream in("E:\\A.txt");
            vector <MAss*> arr;
            while(!in.eof())
            {
                Bass a;
                in >> a;

                a.print();
            }

            arr.pop_back();

            cout<<endl<<arr.size()<<endl;


            for (int i=0; i<arr.size(); i++)
            {
                cout<<endl<<endl<<endl<<endl<<"INDEX : " << i<<endl;
                arr[i][0].print();
            }



            getch();

            in.close();
        }
+3
source share
1 answer

If you want to read / write arbitrary objects, the term you are looking for is "object serialization".

++? , ++ FAQ entry .

+3

All Articles