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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сделать из одной программы другую http://www.cyberforum.ru/cpp-beginners/thread227846.html
//Программа исключает диагонали матрицы, которые делят её на 4 сектора, //посчитать сумму элементов для каждого сектора и найти максимальную. #include "stdafx.h" #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <iostream> #include <fstream>
C++ одномерный массив с++ Удалить все простые числа из массива у меня только получается заменить простые числа на последующие....как сделать правильно? заранее спасибо) #include "stdafx.h" #include <windows.h> void print(int a,int n) { http://www.cyberforum.ru/cpp-beginners/thread227835.html
Умножение элементов массива на число C++
Подскажите пожалуйста, как умножить каждый элемент одномерного массива на число?
C++ Работа с файлами. Argv
У меня один вопросик. Я сделал bat файл, который должен считывать из ткст файла пусть к папке, передать ее в качестве аргумента функции main и дальше производится поиск. Программа готова, но как сделать так чтобы из файла в командную строку шло содержимое файла, а не путь ткст файла. Спасибо!
C++ Сортировка массива по делимости элементов нацело http://www.cyberforum.ru/cpp-beginners/thread227791.html
Дан массив целых чисел. Сформировать второй массив, включив в него все элементы первого, которые делятся нацело на 5. заранее спасибо за любую помощь! :-[
C++ Определить является ли последовательность строго убывающей В общем,мы на грани вылета с универа,не сделаем задачи-привет,армия! Кто может,помогите разобраться с программированием..заранее очень благодарны!!! вот задачи: 10 и 13 это варианты наши Лабораторная работа №2. Программирование разветляющихся вычислительных процессов 10. Выяснить, пересекаются ли кривые у=аx3+bx2+сx+d и y=ex3+fx2+gx+h. При положительном ответе найти точки пересечения. ... подробнее

Показать сообщение отдельно
Card1nal
6 / 6 / 0
Регистрация: 04.01.2010
Сообщений: 118

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

12.01.2011, 17:36. Просмотров 348. Ответов 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&)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 02:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru