Jump to content
  • Advertisement

Archived

This topic is now archived and is closed to further replies.

Cprog

c++, need help

This topic is 6197 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

This might seem like I have no idea what i''m doing, maybe I don''t but I could use some help. The goal of the program is to manaages a huge one-dimension array of doubles as a disk file, but which can be used in a program as if it is kept in memory. This program is to used for placing a double value into any array element from the disk file and vice versa put any element value into a double variable. Only binary no ASCII. My problem is the subscript operator and the << operator, I''m have no idea on how to make it work, any advice on how to work this is deeply thanks. #include #include #include class Darray { private: long amountofindex; fstream *myfile; double fake; double counter; public: int place; Darray(char *, long); int & operator[](int i); friend void operator << (Darray &, double &); friend void operator << (double &, Darray &); //~Darray(); }; Darray::Darray(char * filename, long size){ fstream myfile(filename, ios::in|ios::out|ios::binary); if(myfile.good()) { for (int i = 0; i < size; i++){ myfile.write((char *)&fake, sizeof(fake)); counter++; } myfile.seekg(0,ios::end); amountofindex = myfile.tellg()/sizeof(double); myfile.seekg(0, ios::beg); if(myfile.eof()) myfile.clear(); // clear eof flag else { cerr << "error in reading " << filename << ".\n"; } } } int & Darray::operator[](int i) { if(i < 0 || i >= counter) { cout << "Invalid record number\n"; } else streampos place = i * sizeof (double) ; return place; } void operator << (Darray &d, double &n) { d[place] << n; } void operator << (double &n, Darray &d) { n << d[place]; } int main() { int i; double d99; Darray hugedoub("doublefile.bin", 10); // uses ( or initializes) a disk array of 100000 doubles d99 = 1234.5678; hugedoub[0] << 100.111; // sets element 0 to value hugedoub[1] << d99; cout << hugedoub[0] << endl; cout << hugedoub[1]; return 0; }

Share this post


Link to post
Share on other sites
Advertisement

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!