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;
};
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;
}
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();
}
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]
Проблему решил совсем странным образом. Если надо, то расскажу.
Тема открыта. Проблема не появляется в Borland C++ 5.5 . Но в Borland C++ Builder 6.0 она присутствует.
Код:
istream &operator>>(istream &stream,Polynomial &obj) {
Term A;
int i=0,k=0;
char buf[20];
char c=0;
Term A;
int i=0,k=0;
char buf[20];
char c=0;
Кстати, неакой операторы сложения, умножения и т.п. в данном случае описанны френдами?
aks, задание такое))))
friend Term operator+ (const Term &obj1,const Term &obj2);
friend Term operator* (const Term &obj1,const Term &obj2);
Term& operator= (const Term &obj);
В противном случае, будет невозможно использовать + и * для констант.
Цитата: Ginza9
aks, задание такое))))
Это в задании просят делать friend-ом все что ни попадя?
aks, совершенно верно!