Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Перегрузка >> ввода/вывода

24K
21 ноября 2007 года
versa4e
11 / / 21.11.2007
Всем привет! Проблема такая: пытаюсь перегрузить операции для работы с классом Longint. При попытке компиляции вылетает 20 ошибок на две строчки:

istream &operator>>(istream &input,Longint &op);
ostream &operator<<(ostream &output,const Longint &op);

Пробовал в Борланд СИ++ та же песня - ошибки. Может есть особенности их перегрузки в Visual? Есть мысли?
240
21 ноября 2007 года
aks
2.5K / / 14.07.2006
код и ошибки в студию.
320
21 ноября 2007 года
m_Valery
1.0K / / 08.01.2007
Их надо обьявить не как функции-члены , а как friend.
24K
21 ноября 2007 года
versa4e
11 / / 21.11.2007
Объявления:

[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;
}
350
22 ноября 2007 года
cheburator
589 / / 01.06.2006
Убедись, что подключен <iostream> и используется std:
 
Код:
#include <iostream>
using namespace std;

Затем посмотри на свой
 
Код:
// Объявление
friend istream &operator>>(istream &,const Longint &);
// Реализация
istream &operator>>(istream &input,Longint &op)

и на этот тоже
 
Код:
// Объявление
friend ostream &operator<<(ostream &,Longint &);
// Реализация
ostream &operator<<(ostream &output,const Longint &op)

Что-то мне подсказывает, что ты что-то напутал :)
24K
22 ноября 2007 года
versa4e
11 / / 21.11.2007
Спасибо за помощь! using namespace std подкачал)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог