PMG

Форумы по созданию игр
Текущее время: 28 мар 2024 22:28

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Помогите разобратся с перегрузкой операторов
СообщениеДобавлено: 30 ноя 2007 00:32 
Не в сети
Любитель

Зарегистрирован: 25 ноя 2007 23:39
Сообщения: 10
Попробывал перегрузить операцию "+", она должна складывать массивы по элементно. Не уверен, что сделал это верно, т.к. при выводе полученного массива вылезают какие-то странные числа. Но ошибка скорее и в функции вывода тоже) Помогите плиз.
Код:
Код:
#include <iostream.h>
using std::cout;
using std::cin;
class input_mass {
   int q[100];
   int k,i,sum[10];
public:
   void put_mass (int i);
   int get_mass ();
   friend input_mass operator+(input_mass op1, input_mass op2);
   int show();
};
input_mass operator +(input_mass op1, input_mass op2)
{
   int k;
   input_mass temp;
   for(k=0;k<10;k++)
      temp.sum[k] = op1.q[k]+op2.q[k];
   return temp;
}
int input_mass::show()
{
   k=0;
   for(k=0;k<10;k++)
      cout << sum[k]<< "\n";
   return sum[k++];
}

void input_mass ::put_mass(int i)
{
   k=0;
   if (k==100){
      cout << "coco";
      return;
   }
   
q[k]=i;
k++;
}
int  input_mass ::get_mass()
{
   k=0;
   return q[k++];
}
int main ()
{
   
   int i;
   input_mass a,b,c;
   cout << "array 1 \n";
   for(i=0;i<10;i++){
   a.put_mass(i);
   cout << a.get_mass()<< "\n";
   }
   cout << "array 2\n";
   for (i=0;i<10;i++) {
      b.put_mass(i);
      cout << b.get_mass()<< "\n";
   }
   c = a + b;
   cout << "summa massivov: \n";
   c.show();
   return 0;
}

Заранее благодарю!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 30 ноя 2007 07:04 
Не в сети
Любитель

Зарегистрирован: 19 сен 2007 02:54
Сообщения: 38
Towards,
>friend input_mass operator+(input_mass op1, input_mass op2);
зачем friend? делается вот - так:
Код:
// объявление в классе:
input_mass operator+(input_mass op)const;

// реализация:
input_mass input_mass::operator+ (input_mass op) const

   input_mass temp;
   for(int k=0;k<10;k++)
      temp.sum[k] = q[k]+op.q[k];
   return temp;
}


ЗЫ: код просто ужос =))

_________________
c++ foreva!!!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 30 ноя 2007 12:39 
Не в сети
Любитель

Зарегистрирован: 25 ноя 2007 23:39
Сообщения: 10
Через friend тоже работает. У меня не получается вывести конечный массив, как уже писал, выводит бред какой-то))
Цитата:
ЗЫ: код просто ужос
я ведь токо учусь =) а что в нем ужасного? )


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 02 фев 2008 13:32 
Не в сети
Любитель
Аватара пользователя

Зарегистрирован: 01 фев 2008 16:09
Сообщения: 10
1.перемудрил малость.
2.придерживайся поговорки "котлеты отдельно мухи отдельно".
обьявления и реализация не есть хорошо когда она в одном и том же месте.

_________________
нас невозможно сбить с пути или поздравить с новым годом, мы мухи, нам лишь сутки жить и сутки трахаться с народом.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите разобратся с перегрузкой операторов
СообщениеДобавлено: 27 мар 2008 06:59 
Не в сети
Новичок
Аватара пользователя

Зарегистрирован: 27 мар 2008 06:31
Сообщения: 2
Код:
// реализация:
input_mass input_mass::operator+ (input_mass op) const

   input_mass temp;
   for(int k=0;k<10;k++)
      temp.sum[k] = q[k]+op.q[k];
   return temp;
}

не совсем согласен с автором. я бы сделал так.
Код:
input_mass& input_mass::operator+(const input_mass &op)
{
  if (this != &op)
  {
     for (int i = 0; i < AnyConst/*советую вынести константу*/;i++)
      this->sum[i] = this->q[i] + op.q[i]; //здесь this для понятности, можно и убрать
     return *this;
  }
}

насчет мух и котлет - согласен на все 100, упрощайте себе жизнь.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB