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
Пока на собственное сообщение не было ответов, его можно удалить.