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

Не получается перегрузить << - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Переведите пожалуйста с Паскаля на СИ++. Сумма ряда http://www.cyberforum.ru/cpp-beginners/thread1221113.html
uses crt; var s,si,x:real; i,n:integer; function fact(x:integer):longint; begin if (x=1) or (x=0) then fact:=1 else fact:=fact(x-1)*x; end; begin write('x = ');readln(x); repeat
C++ При закрытии консоли выдаётся сообщение process exited after (сколько то секунд) seconds with return value 0 для продолжения нажмите любую клавишу - выдаёт при return(0\1) и при exit(0\1). как убрать? где то легко вкл и выкл, но где? пишу в devcpp 5.6.3 http://www.cyberforum.ru/cpp-beginners/thread1221101.html
Операторы цикла с предусловием и с постусловием: Выводить на экран суммарное штрафное время C++
Задание: составить программу согласно заданию. Составьте программу, суммирующую штрафное время команд при игре в хоккей. Выводить на экран суммарное штрафное время обеих команд после любого его изменения. После окончания игры выдать итоговое сообщение.
Перевод кода с Pascal C++
uses crt; const n = 17; var arr: array of integer; sum: integer; i: byte; k,d,e: integer; begin
C++ Нужно перенести с Паскаля на Си++ http://www.cyberforum.ru/cpp-beginners/thread1221080.html
var i, j: integer; begin for i := -2 to 2 do if i <> 0 then for j := 0 to 99 do write(i * 200 + j * i div abs(i):5); readln end. Используйте теги форматирования кода. Замечание
C++ Перевод кода с Pascal var k,n,m:integer; x,s,p,t:real; begin repeat write('x<>0 x=');{х в знаменателе, исключаем заведомое деление на 0} readln(x); until x<>0; repeat write('n>0 n='); readln(n); подробнее

Показать сообщение отдельно
RareScrap
0 / 0 / 0
Регистрация: 14.10.2013
Сообщений: 84
02.07.2014, 10:01     Не получается перегрузить <<
Добрый день. Никак не получается вывести разность a-b. Однако компилятор не ругается, если выводить только один объект.

Хедер с объявлением класса
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
29
30
31
32
class timeClass
{
public:
    timeClass(int h = 0, int m = 0)
    {
        min = 60*h+m;
        if(min >= 1440)
        {
            min = 0;
        }
    }
    friend ostream& operator<<(ostream&, timeClass&);
    timeClass& operator+(timeClass& tc)
    {
        min = (min+tc.min);
        return *this;
    }
    timeClass operator-(timeClass& tc)
    {
        min = abs(min-tc.min);
        return *this;
    }
    
 
    int min;
};
 
ostream& operator<<(ostream& stream, timeClass& tc)             
    {
        stream << tc.min/60 << ':' << tc.min%60;
        return stream;
    }
Сама программа
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <cmath>
using namespace std;
#include "timeClass"
 
 
int main()
{
    timeClass a(11, 32), b(0, 45);
    cout << a-b;
}
Пожалуйста, объясните где я ошибся.
Компилятор говорит "10:7: error: no match for 'operator<<' (operand types are 'std::ostream {aka std::basic_ostream<char>}' and 'timeClass')".
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 00:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru