Vừa load được bộ Turbo C++. Mạn phép bác vinhie47, tui xin trả lời bằng đoạn code viết trong TurboC++.
Phiên bản code này chưa đầy đủ (chưa load được đối tượng con neibor). Trong phiên bản tới chúng ta tiếp tục giải quyết vấn đề này. (nếu các bác test trong bộ compile khác thì copy từ chỗ //--- std lib đến cuối)
Code://--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop //--- std lib #include <list> #include <iostream> #include <fstream> //--------------------------------------------------------------------------- #pragma argsused using namespace std; class MyClass { public: int id; // object id public: list<int> m_mylist; MyClass* m_pNeighbors; MyClass& save(ostream& out) { // save object-id out << this->id << endl; // save list data out << m_mylist.size() << endl; for (list<int>::iterator it = m_mylist.begin(); it != m_mylist.end(); it++) { out << *it << endl; } // save pointer if (m_pNeighbors) { out << m_pNeighbors->id << endl; } else { out << (int) 0 << endl; } return *this; }; MyClass& load(istream& in) { // first load id in >> this->id; // load list data int count; in >> count; for (int i = 0; i < count; i++) { int val; in >> val; this->m_mylist.push_back(val); } // pass m_pNeighbors int idNeighbors; in >> idNeighbors; if (!idNeighbors) { this->m_pNeighbors = NULL; } return *this; } MyClass& dump(ostream& out) { // dump object-id out << "id: " << this->id << endl; // dump list data out << "list size: " << m_mylist.size() << endl; out << "list data: "; for (list<int>::iterator it = m_mylist.begin(); it != m_mylist.end(); it++) { out << *it << ", "; } out << endl; // dump pointer if (m_pNeighbors) { out << "NeighborsId: " << m_pNeighbors->id << endl; } else { out << "NeighborsId: " << (int) 0 << endl; } return *this; }; }; int main(int argc, char* argv[]) { //--- save object MyClass testOrgClass; testOrgClass.id = 1; testOrgClass.m_pNeighbors = NULL; for (int i = 0; i <= 10; i++) { testOrgClass.m_mylist.push_back(i); } ofstream outdata ("data.txt"); testOrgClass.save(outdata); outdata.close(); // load object ifstream indata ("data.txt"); MyClass testNewClass; testNewClass.load(indata); testNewClass.dump(cout); return 0; } //---------------------------------------------------------------------------