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

Ваш аккаунт

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

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

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

Проблема с перегрузкой

6.7K
25 апреля 2007 года
Ginza9
96 / / 30.06.2006
Пишу класс "Полином". В задании сказано, что надо использовать 2 класса: класс Терм и собственное класс Полином.

Терм:

Код:
class Term {
    public:
        int a,pow;
        Term();
        Term(int t);
        Term(int b,int c);
        friend Term operator+(Term &obj1,Term &obj2);
        friend Term operator*(Term &obj1,Term &obj2);
        Term &operator=(Term obj);
        friend ostream &operator<<(ostream &stream,Term &obj);
        friend Polynomial;
};


Полином:

Код:
class Polynomial {
    public:
        Term poly[6];
        int degree;
        Polynomial();
        Polynomial(int a);
        Polynomial(Term b);
        friend ostream &operator<<(ostream &stream,Polynomial obj);
                friend istream &operator>>(istream &stream,const Polynomial &obj);
        friend Polynomial operator+(Polynomial &obj1,Polynomial &obj2);
        void sort();
    private:
        bool Order;
};


Проблема возникает в работе оператор ввода >>. Компилятор ни на что не ругается, но каким-то макаром получается, что я не могу ввести второй полином.

Перегрузка:

Код:
istream &operator>>(istream &stream,Polynomial &obj) {
        Term A;
    int i=0,k=0;
    char buf[20];
    char c;
    while(c!='\n') {
        c=getchar();
        if(c=='+' || c=='-' || c=='\n') {
            A=Parse(buf);
            obj.poly[k]=A;
            k++;
            i=0;
        }
        buf=c;
        i++;
    }
        return stream;
}


Главная функция:

Код:
void main() {
    Term A;
    Polynomial B,C;
        cout << "First: ";
        cin >> B;
        cout << "Second: ";
        cin >> C;
    cout << B;
        cout << "\n";
        cout << C;
        cout << "\n";
        cout << B+C;
        getch();
}


Вся программа:[ATTACH]1767[/ATTACH]
6.7K
25 апреля 2007 года
Ginza9
96 / / 30.06.2006
Проблему решил совсем странным образом. Если надо, то расскажу.
6.7K
25 апреля 2007 года
Ginza9
96 / / 30.06.2006
Тема открыта. Проблема не появляется в Borland C++ 5.5 . Но в Borland C++ Builder 6.0 она присутствует.
1
26 апреля 2007 года
kot_
7.3K / / 20.01.2000
так проблема у тебя в чем? во воде второго полинома? Решается просто.
 
Код:
istream &operator>>(istream &stream,Polynomial &obj) {
        Term A;
    int i=0,k=0;
    char buf[20];
    char c=0;
240
26 апреля 2007 года
aks
2.5K / / 14.07.2006
Кстати, неакой операторы сложения, умножения и т.п. в данном случае описанны френдами?
6.7K
26 апреля 2007 года
Ginza9
96 / / 30.06.2006
aks, задание такое))))
309
27 апреля 2007 года
el scorpio
1.1K / / 19.09.2006
Правильно писать так:
friend Term operator+ (const Term &obj1,const Term &obj2);
friend Term operator* (const Term &obj1,const Term &obj2);
Term& operator= (const Term &obj);
В противном случае, будет невозможно использовать + и * для констант.
240
27 апреля 2007 года
aks
2.5K / / 14.07.2006
Цитата: Ginza9
aks, задание такое))))


Это в задании просят делать friend-ом все что ни попадя?

6.7K
27 апреля 2007 года
Ginza9
96 / / 30.06.2006
aks, совершенно верно!

http://cards.funnystories.ru/288100 ;)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог