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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Card1nal
6 / 6 / 0
Регистрация: 04.01.2010
Сообщений: 118
#1

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

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

Добрый день
Помогите пожалуйста с перегрузкой оператора <<
Он должен отнимать от находящегося справа 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.01.2011, 17:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос перегрузка операторов и ссылки. (C++):

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

C++ перегрузка операторов - C++
люди такая ситуация кто может в краце объясните перегрузку операторов мне например надо перегрузить оператор умножения что бы умножить...

Перегрузка операторов - C++
Никак не возьму в толк, почему оно не работает! // CG5.cpp : Defines the entry point for the console application. // #include...

Перегрузка операторов - C++
Привет, у меня есть код, но когда я его делал у меня возникла пара вопросов. #include &lt;iostream&gt; #include &lt;iomanip&gt; #include...

Перегрузка операторов - C++
Как написать код перегрузки операторов (+= и --) чтобы выполнялось действие v1+=v2--; v1 и v2 - массив чисел

перегрузка операторов - C++
Товарисссчи, что значит запись: CVector2D::operator+(CVector2D const&amp; v1)const файл *срр и чем отличается от CVector2D const operator...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
lemegeton
2924 / 1353 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
12.01.2011, 18:10 #2
Боюсь, что второй оператор должен быть константой.
0
Card1nal
6 / 6 / 0
Регистрация: 04.01.2010
Сообщений: 118
12.01.2011, 18:42  [ТС] #3
Нашел ошибку, надо было size_t передавать, а не int.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.01.2011, 18:42
Привет! Вот еще темы с ответами:

Перегрузка операторов - C++
Здравствуйте! Сейчас читаю книгу: &quot;Искусство программирование на С++&quot; Шилдта. Часто встречается перегрузка. Заметил, что в некоторых...

Перегрузка операторов - C++
я учусь перегружать операторы,но не получается,выдает exception class Student { public: Student(void) { name=new char; ...

Перегрузка операторов - C++
Реализуйте класс CTime , моделирующий время суток ( количество часов , минут и секунд). Каркас класса : // Моделирует время суток ,...

Перегрузка операторов - C++
Привет, не подскажите, почему у меня тут не работает правильно += оператор. #include &lt;iostream&gt; #include &lt;conio.h&gt; #include...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru