Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Card1nal
6 / 6 / 0
Регистрация: 04.01.2010
Сообщений: 118
12.01.2011, 17:36     перегрузка операторов и ссылки. #1
Добрый день
Помогите пожалуйста с перегрузкой оператора <<
Он должен отнимать от находящегося справа 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&)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.01.2011, 17:36     перегрузка операторов и ссылки.
Посмотрите здесь:

Перегрузка операторов C++
C++ Перегрузка операторов
Перегрузка операторов. C++
Перегрузка операторов. C++ C++
C++ Перегрузка операторов С++
Перегрузка операторов! C++
C++ Перегрузка операторов
Перегрузка операторов C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
12.01.2011, 18:10     перегрузка операторов и ссылки. #2
Боюсь, что второй оператор должен быть константой.
Card1nal
6 / 6 / 0
Регистрация: 04.01.2010
Сообщений: 118
12.01.2011, 18:42  [ТС]     перегрузка операторов и ссылки. #3
Нашел ошибку, надо было size_t передавать, а не int.
Yandex
Объявления
12.01.2011, 18:42     перегрузка операторов и ссылки.
Ответ Создать тему
Опции темы

Текущее время: 15:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru