Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
BenBen
0 / 0 / 0
Регистрация: 16.01.2012
Сообщений: 15
#1

К числу прибавить объект класса

17.01.2012, 18:17. Просмотров 1482. Ответов 24
Метки нет (Все метки)

Не получается перегрузить '+' для сложения числа с объектом

Пишу через френд
C++
1
friend Vremya operator + (int a, Vremya );
C++
1
2
3
4
5
6
7
8
9
Vremya operator + (int a, Vremya b)
{
        int sec = getSec(b);         //getSec - перевод в секунды, getHour - перевод в часы
        while (a-- != 0)
        {
        sec++;
        }
        return b = getHour(sec);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.01.2012, 18:17
Ответы с готовыми решениями:

Массив. Прибавить к 1ому числу 1ую цифру 2ого и т. д! :)
Задан массив чисел. К первому числу прибавить первую цифру второго, ко 2му --...

нужно чтобы в строке если встречается символ то прибавить соответствующую цифру к числу
как опериравать строками? нужно чтобы в строке если встречается сивол то...

Как сложить объект базового класса с объектом производного(наследуемого класса)
Как умножить объект базового класса с объектом производного(наследуемого...

Почему объект производного класса не видит префиксный оператор из базового класса?
Короче создал я базовый класс с перегруженным префиксным оператором ++. Потом...

Можно ли создать объект класса с таким же именем как у самого класса?
Можно ли создать объект класса с таким же именем как у самого класса? Ну или...

24
retmas
Жарю без масла
865 / 747 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
19.01.2012, 20:46 #21
Цитата Сообщение от BenBen Посмотреть сообщение
C++
1
t1 + 10; //работает
тот же случай - t1 не должно меняться, а у вас здесь
Цитата Сообщение от BenBen Посмотреть сообщение
C++
1
2
3
4
5
6
Vremya &Vremya::operator + (int a)
{
    int sec = getSec(*this);
    sec += a;
    return *this = getHour(sec);
}
меняет

Добавлено через 2 минуты
должно быть так
C++
1
2
3
4
Vremya Vremya::operator + (int a)
{
    return getHour(getSec(*this) + a);
}
Добавлено через 2 минуты
и пользоваться этим надо как-то так
C++
1
2
t2 = t1 + 10; // Vremya Vremya::operator + (int a);
t2 = 10 + t1; // Vremya operator + (int a, const Vremya &t);
1
BenBen
0 / 0 / 0
Регистрация: 16.01.2012
Сообщений: 15
19.01.2012, 20:46  [ТС] #22
А почему не должно меняться? Ведь если например к 3 прибавить 1 оно станет 4 и изменилось

Добавлено через 27 секунд
а понял
0
retmas
Жарю без масла
865 / 747 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
19.01.2012, 21:02 #23
а еще лучше определите уже оба
C++
1
Vremya Vremya::operator +
не как член класса и не как френд. и
C++
1
Vremya Vremya::operator -
это тоже касается. и они не должны возвращать ссылки
подсказка: у вас есть operator += и operator -= - члены класса
0
BenBen
0 / 0 / 0
Регистрация: 16.01.2012
Сообщений: 15
19.01.2012, 21:42  [ТС] #24
Я так и не понял как это сделать(
0
retmas
Жарю без масла
865 / 747 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
19.01.2012, 21:45 #25
например так
C++
1
2
3
4
5
6
7
8
9
Vremya Vremya::operator+(const Vremya &t, int a)
{
    return Vremya(t) += a;
}
 
Vremya Vremya::operator+(int a, const Vremya &t)
{
    return operator+(t, a);
}
operator- по аналогии
1
19.01.2012, 21:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.01.2012, 21:45

как узнать,является данный объект класса А1 наследником класса А2
Всем привет)есть классы S, A1, A2, B1, B2. Иерархия наследования следующая ...

Ошибка компиляции (преобразование объекта класса в объект другого класса)
Друзья, добрый день! Не могу понять почему выдается ошибка компиляции......

Использование в качестве поля класса указатель на объект другого класса
Ошибка в названии - "указателЯ" Вот, пытаюсь освоить ООП (пока только...


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

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

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