Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
6 / 6 / 1
Регистрация: 04.01.2010
Сообщений: 118
1

перегрузка операторов и ссылки.

12.01.2011, 17:36. Показов 822. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день
Помогите пожалуйста с перегрузкой оператора <<
Он должен отнимать от находящегося справа int'a определенное число. и прибавлять его к одной из переменных находящегося слева класса Droid.

вот код :
в .h

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#ifndef __DROID_H__
#define __DROID_H__
#include <string>
#include <iostream>
class Droid{
public:
  Droid(std::string id = "");// : Energy(50), Attack(25), Toughness(15);                                                                     
  ~Droid();
  std::string getId();
  size_t  getEnergy();
  void setId(std::string id);
  void setEnergy(size_t Energy);
  size_t getAttack();
  size_t setToughness();
  std::string getStatus();
  void setStatus(std::string *Stat);
  bool operator==(const Droid other) const;
  bool operator!=(const Droid other) const;
private:
  std::string Id;// le matricule cite plus haut                                                                                              
  size_t Energy; //l'energie restante avant de changer les piles                                                                             
  size_t const Attack;// la puissance d'attaque                                                                                              
  size_t const Toughness;// sa resistance                                                                                                    
  std::string *Status;  // le statut actuel du droid.                                                                                        
};
void operator<<(Droid &droid, int &batteries);
 
#endif
функция перегрузки в .cpp:

C++
1
2
3
4
5
6
7
8
9
10
11
void operator<<(Droid &droid, int &batteries){
  int leak = 100 - droid.getEnergy();
  if (batteries >= leak) {
    batteries -=leak;
    droid.setEnergy(100);
  }
  else {
    droid.setEnergy(droid.getEnergy() + batteries);
    batteries -= leak;
  }
}
строка с вызовом в main :
C++
1
2
3
4
   
Droid   d;
size_t Durasel = 200;
d << Durasel;
Компилятор ругается, пишет :
main_to_be_removed.cpp: In function ‘int main()’:
main_to_be_removed.cpp:13: error: no match for ‘operator<<’ in ‘d << Durasel’
droid.hh:36: note: candidates are: void operator<<(Droid&, int&)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.01.2011, 17:36
Ответы с готовыми решениями:

Что такое "перегрузка операторов"? Каковы принципы работы перегруженных операторов и назначение указателя this
Добрый день . Помогите понять принцип работы перегрузки операторов. объясните пожалуйста в...

перегрузка операторов С++
есть программа: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; class Time {...

Перегрузка операторов
Вообщем в чём дело смысл перегрузки операторов ясен,зачем применять тоже ясно,как организуется...

Перегрузка операторов
Хочу написать функцию вывода стека на экран. Стек построен на основе динамического массива который...

2
4773 / 2582 / 894
Регистрация: 29.11.2010
Сообщений: 5,590
12.01.2011, 18:10 2
Боюсь, что второй оператор должен быть константой.
0
6 / 6 / 1
Регистрация: 04.01.2010
Сообщений: 118
12.01.2011, 18:42  [ТС] 3
Нашел ошибку, надо было size_t передавать, а не int.
0
12.01.2011, 18:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.01.2011, 18:42
Помогаю со студенческими работами здесь

Перегрузка операторов
Доброго времени суток Код выдает ошибку Не могу понять как исправить cannot convert...

перегрузка операторов
Есть перечисление и функция : enum Num { on, tw, th, fo ,fi, si ,se, ei, ni ,last }; Num...

Перегрузка операторов
помогите разобраться с перегрузкой... в TcomboBox выбирается год... 1 и 2... их нужно сравнить.....

Перегрузка операторов
Расскажите можно ли как-то сделать перегрузку операторов не в классе, а в своём пространстве имён?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru