#include <iostream>
using namespace std;
Перегрузка >> ввода/вывода
istream &operator>>(istream &input,Longint &op);
ostream &operator<<(ostream &output,const Longint &op);
Пробовал в Борланд СИ++ та же песня - ошибки. Может есть особенности их перегрузки в Visual? Есть мысли?
код и ошибки в студию.
Их надо обьявить не как функции-члены , а как friend.
[SIZE="2"]ifndef _longint_h_
#define _longint_h_
class Longint
{
//friend Longint operator+(Longint op1,Longint op2);
friend istream &operator>>(istream &,const Longint &);
friend ostream &operator<<(ostream &,Longint &);
public:
Longint();
Longint(char *s);
~Longint();
char *num;
char* add(char *op1,char *op2);
char* sub(char *op1,char *op2);
int cmp(char *op1,char *op2);
};
istream &operator>>(istream &input,Longint &op);
ostream &operator<<(ostream &output,const Longint &op);
// Longint operator+(Longint op1,Longint op2);
#endif[/SIZE]
И реализация:
istream &operator>>(istream &input,Longint &op)
{
char temp[256];
int len;
input >> temp;
len=strlen(temp);
op.num = new char [len];
for(int i=0;i<=len-1;i++)
op.num=temp;
op.num[len]='\0';
return input;
}
ostream &operator<<(ostream &output,const Longint &op)
{
char *out;
int j=0,l=0;
int len=strlen(op.num);
for(int i=0;i<=(len-1);i++){
if(op.num=='-'){out[j]=op.num;j++;}
if(op.num!=0 && op.num!='-') l=1;
if(l) {out[j]=op.num; j++;}
}
out[j+1]='\0';
return output << out;
}
Код:
Затем посмотри на свой
Код:
// Объявление
friend istream &operator>>(istream &,const Longint &);
// Реализация
istream &operator>>(istream &input,Longint &op)
friend istream &operator>>(istream &,const Longint &);
// Реализация
istream &operator>>(istream &input,Longint &op)
и на этот тоже
Код:
// Объявление
friend ostream &operator<<(ostream &,Longint &);
// Реализация
ostream &operator<<(ostream &output,const Longint &op)
friend ostream &operator<<(ostream &,Longint &);
// Реализация
ostream &operator<<(ostream &output,const Longint &op)
Что-то мне подсказывает, что ты что-то напутал :)
Спасибо за помощь! using namespace std подкачал)