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

Перегрузка оператора - - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Преобразование двумерного массива в одномерный http://www.cyberforum.ru/cpp-beginners/thread645391.html
Дан двумерный массив. Сформировать одномерный массив, каждый элемент которого равен сумме элементов соответствующей строки двумерного массива меньших числа n.
C++ Вернуть на старт Всем привет:). Говорю сразу - я жесткий нуб. Начал изучение C++ буквально сегодня. Прошу вас, не относитесь ко мне как к идиоту, я как раз пришел на этот форум, что бы чему-то научиться. Вот у меня возникла проблемка. Я первый раз пишу программ самостоятельно, без туториала. Решил написать простенькую консольную, где можно будет вводить два числа, программа будет складывать эти числа и... http://www.cyberforum.ru/cpp-beginners/thread645380.html
C++ Прочесть строку сишным способом(фопен)
Добрый день. Есть необходимость прочесть определенную строку(по номеру) используя стандартный ввод/вывод си, и не используя getline(). Как это реализовать? есть функция для получения индекса начала строки? кроме как в цикле проверять на перенос строки
Как сделать MDI окна залипающими ? C++
Как создать MDI окно я разобрался. Вот хотелось бы узнать как его сделать в фреймовом окне залипающим.Тоесть чтобы допустим к краю тащишь он прилепает, или к низу. Это вообще MDI называется или может как то по другому? Кто что делал подобное подскажите плз.
C++ Функция getline(). Как исключить знаки препинания (символы)? http://www.cyberforum.ru/cpp-beginners/thread645339.html
Задача следующая: Из файла source.txt прочесть слово Отправить запрос в БД Получить перевод слова Записать в файл destination.txt Пример: Читаются следующие символы: ('abc', пробел, 'bac', пробел, 'cab', символ новой строки, 'dab'). На восьмой итерации читается EOF. Использую getline(inputFile, sourceWord, ' ');
C++ Регулярные выражения в с++ Рылся рылся, нигде не нашел... Кто нибудь, объясните: 1) как установить эту библиотеку Regex. 2) Как заставить её работать. 3) И простой пример кода Пользуюсь visual 2010 там есть библиотека regex. Но использовать её никак не получается... Вообщем помогите) подробнее

Показать сообщение отдельно
alexey31415
 Аватар для alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
01.09.2012, 16:49     Перегрузка оператора -
В своём классе я перегрузил оператор -,но в функции,использующей вычитание возникает ошибка
C++
1
2
3
error C2678: бинарный "-": не найден оператор, принимающий левый операнд типа "const Date" (или приемлемое преобразование отсутствует)
1>          d:\projects\billing\billing\date.h(34): может быть "const Date &Date::operator -(const Date &)"
1>          при попытке сопоставить список аргументов "(const Date, Date)"
вот
реализация
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
const Date &operator-(const Date &right);
 
 
//необходим для получения значения
//длительности звонка
const Date &Date::operator-(const Date &right)
{
Date New;
 
//если равны дни
//начала и конца звонка
if
(
(this->year == right.year)   &&
(this->month == right.month) &&
(this->day == right.day)
)
{
    New.hour = this->hour - right.hour;
    
    if(this->minute >= right.minute)
        New.minute = this->minute - right.minute;
    else
        {
            New.hour--;
            New.minute = this->minute + (60 - right.minute);
        }
 
    if(this->second >= right.second)
        New.second = this->second - right.second;
    else
        {
            New.minute--;
            New.second = this->second + (60 - right.second);
        }
        
        return New;
}
 
//если разные дни
//также учитывается случай,когда звонок начался
//в последний день одного месяца
//и закончился в первый день другого
    New.hour    = (23 - right.hour)   + this->hour;
    New.minute  = (60 - right.minute) + this->minute;
    New.second  = (60 - right.second) + this->minute;
    
    if(New.second >= 60)
        {
            New.minute++;
            New.second -= 60;
        }
        
    if(New.minute >= 60)
        {
            New.hour++;
            New.minute -= 60;
        }
        
    if(New.hour >= 24)
        {
            New.day++;
            New.hour -= 24;
        }
    
    return New;
}

и строки,в которых возникает ошибка
C++
1
2
Date timewise = call_start - LastCreditAdd;
Date not_free_duration = duration - free_minutes_on_weekend;
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 19:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru