Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.10.2010, 15:12   #1
Purr
Пользователь
 
Аватар для Purr
 
Регистрация: 18.05.2010
Сообщений: 21
Печаль Перегрузка операторов в С++

Задача:создать класс с 2-мя переменными float, статическим массивом типа double из М элементов (от 6 до 9), указатель типа int. Добавить перегрузки операторов присваивания и сложения( сложение с помощью методов класса); с помощью дружественной функции перегрузку && (если все поля класса = 0, то объект = 0); с помощью метода класса перегрузку оператора: объект класса -= число

Проблема в том, что я не знаю, как написать правильно перегрузку двух последних операторов. Искала в интернете, но ничего по этой проблеме не нашла, чтобы я могла понять. Отсюда все ошибки, они в комментариях.
Пожалуйста, помогите!

Код:
#include <iostream.h>
#include <conio.h>
#include <string.h>
#include <stdio.h>
#include<iomanip.h>

const M=7, N=5;

class TGruz
{
float a, b;
double st_mas[M];
int *p;

public:
TGruz(float aa=0, float bb=0, double sm=0, int pp=0);
void vvod();
void vivod();
friend void f_vvod(TGruz&x);

TGruz&operator =(TGruz&obj);
TGruz operator +(TGruz&obj);
friend TGruz operator &&(TGruz&x1, TGruz&x2);
TGruz&operator -=(TGruz&y);
};

TGruz::TGruz (float aa, float bb, double sm, int pp)
	{
	a=aa;
	b=bb;
	for (int i=0; i<M; i++)
	st_mas[i]=sm;
	p=new int;
	*p=pp;
	}

void TGruz::vvod()
	{
	cout << "Vvedite 1-oe chislo" << endl;
	cin >>a;
	cout << "Vvedite 2-oe chislo" << endl;
	cin >>b;
	 for(int i=0; i<M; i++)
	 {
	 cout << "Vvedite el-t massiva" << endl;
	 cin >> st_mas[i];
	 }
	cout << "Vvedite ykazatel" << endl;
	cin >> *p;
	}

void TGruz::vivod()
	{
	cout << "Chislo 1: " <<a<<endl;
	cout << "Chislo 2: " <<b<<endl;
	cout << "Massiv: " << endl;
	 for(int i=0; i<M; i++)
	 {
	 cout<<st_mas<<endl;
	 }
	cout << "Ykazatel: "<<setw(15)<<*p<<endl;
	}

void f_vvod (TGruz&x)
	{
	cout << "Vvedite 1-oe chislo" << endl;
	cin >>x.a;
	cout << "Vvedite 2-oe chislo" << endl;
	cin >>x.b;
	 for(int i=0; i<M; i++)
	 {
	 cout << "Vvedite el-t massiva" << endl;
	 cin >>x.st_mas[i];
	 }
	cout << "Vvedite ykazatel" << endl;
	cin >> *x.p;
	}

TGruz&TGruz::operator =(TGruz&obj)
{
a=obj.a, b=obj.b;
return *this;
}

TGruz TGruz::operator +(TGruz&obj)
{
TGruz tmp;
tmp.a=a+obj.a;
tmp.b=b+obj.b;
return tmp;
}

TGruz operator &&( TGruz&x1, TGruz&x2)
{
TGruz eye;
if(eye.a!=0 && eye.b!=0)
return 1;
else
 return 0;
}///Parametr x1 and x2 are never used


int TGruz::operator -=(TGruz&obj)  // is not a member of TGruz
{
if (a-=obj.a && b-=obj.b)// undefined symbole `obj`
return 1;//Reference unitilizated with int needs lvalue of type TGruz
else return 0;//Reference unitilizated with int needs lvalue of type TGruz
}//Parametr y is never used

void main()
{
clrscr();
TGruz a;
TGruz b;
TGruz *px, *py;
px=new TGruz;
py=new TGruz;
a.vvod();
b.vvod();
f_vvod(*px);
f_vvod(*py);
px->vivod();
py->vivod();
a.vivod();
b.vivod();

TGruz mas[M];
	for(int i=0;i<N;i++)
	{
	cout<<"mas["<<i<<"].  ";
	mas[i].vivod();
	cout<<endl;
	}
cout << "Press any key" << endl;

}
getch();
— Марвин, ты спас нам жизнь!
— Кошмар, правда?
(с) The Hitchhiker's Guide to the Galaxy
Purr вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
c++ перегрузка операторов pavel282 Помощь студентам 6 11.09.2010 20:35
Перегрузка операторов(С++) Сергей AfeR Помощь студентам 0 16.06.2010 18:34
Перегрузка операторов. Macb3th Общие вопросы C/C++ 5 01.04.2010 21:14
Перегрузка операторов (С++) Перчитель Помощь студентам 1 03.12.2008 18:46
Перегрузка операторов, Организация перегрузки операторов chagin_yav Помощь студентам 2 12.05.2008 09:15