Re[3]: Перегрузка << и >>
От: willi  
Дата: 27.04.01 12:29
Оценка:
Здравствуйте Moroz, 27.04.2001 05:20:06 вы писали:

Здравствуйте Moroz, 27.04.2001 05:20:06 вы писали:

вот полностью работающий пример

#include "string.h"
#include "iostream.h"

class CMyClass
{
private:
int inform;
char* cStr;
public:
CMyClass() : inform(0), cStr(NULL) {}
~CMyClass() { if(cStr) delete [] cStr; }

void SetData(int i,char* inStr)
{
inform = i;
if(cStr) delete [] cStr;
cStr = NULL;
cStr = new char[strlen(inStr)+1];
strcpy(cStr, inStr);
}

int GetInform() { return inform; }
const char* GetChar() { return cStr; }

friend ostream& operator << (ostream& stream, const CMyClass &SaveObj);
friend istream& operator >> (istream& stream, CMyClass &LoadObj);
};

ostream& operator << (ostream& stream, const CMyClass &SaveObj)
{
stream << SaveObj.inform << endl;
stream << SaveObj.cStr << endl;
return stream;
}

istream& operator >> (istream& stream, CMyClass &LoadObj)
{
char tmp[255];
stream >> LoadObj.inform;
stream >> tmp;
if(LoadObj.cStr) delete [] LoadObj.cStr;
LoadObj.cStr = NULL;
LoadObj.cStr = new char[strlen(tmp)+1];
strcpy(LoadObj.cStr, tmp);
return stream;
}


int main(int argc, char* argv[])
{
CMyClass mc;
cin >> mc;
cout << endl << mc;

return 0;
}

операторы << >> должны быть friend-ами, но не member-ами
а у тебя они были member-ами
\/\/i||i
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.