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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2008, 13:02   #1
EfiopianDIMON
 
Регистрация: 03.06.2008
Сообщений: 8
По умолчанию Operator C++

Задание: реализовать оператор возведение в степень в классе <Дробь>.
До класса <Дробь> реализовывал оператор степень натурального числа, в классе с одним полем:


Код:
class Int
{	
private:
	int m_value;
public:
           Int operator ^ (Int a)
	{	
		Int res=1;
		for(int i=1; i<=a.m_value; i++)
		{
			res *= this->m_value;
		}
		return res;
	}

	void Show()
	{
		cout<<m_value<<"\n";
	}

};
А вот в классе <Дробь> ни как не получается:


Код:
class Fraction
{
private:
     int numerator;
     int denomorator;
public:
     void Degree_num (Fraction res, int d)
	{	
		for(int i=1; i<=d; i++)
		{
			res.numerator *= this->numerator;
		}
	}
	
	void Degree_denom (Fraction res, int d)
	{
		for(int i=1; i<=d; i++)
		{
			res.denomorator *= this->denomorator;
		}
	}

             Fraction operator ^(int d)
	{	
		Fraction res (Degree_num(this->numerator, d),     
                                            Degree_denom(this->denomorator, d));
	
		return res;
	}

};
EfiopianDIMON вне форума Ответить с цитированием
Старый 13.12.2008, 16:52   #2
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

В каждой функции вы передаете копию дроби, в то время как исходная не изменяется. Вам нужно передавай ссылку на экземпляр класса Fraction.
А вообще стоит сделать так
Код:
Fraction operator^ (int d)
{	
     for(int i=1; i<=d; i++)
     {
	this.enumerator *= this.enumerator;
	this.denomorator *= this.denomorator;
     }
     return (*this);        //не помню точно, но помоему так
}
Но решать вам.
MaTBeu вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибка expected init-declarator before "operator" Tev Общие вопросы C/C++ 2 13.11.2008 22:31
ошибка - [Error] Unit1.pas(325): Operator not applicable to this operand type blackstersl Общие вопросы Delphi 6 27.08.2008 13:17
Delphi + dll= Invalid Pointer Operator LEKA Общие вопросы Delphi 4 01.05.2007 23:38