Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 21.01.2017
Сообщений: 20
1

Как вычесть из одного класса другой?

04.06.2017, 22:41. Показов 1093. Ответов 4
Метки нет (Все метки)

Вопрос такой, есть 2 класса в одном минуты секунды, во втором только секунды, не могу понять как сделать что бы из одного класса вычесть другой. Кода много поэтому скину только некоторые методы, и ещё проект из 3-х файлов.

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
#include <iostream>
 
using namespace std;
class Second;
class Time
{
    friend class Second;
    int min, sec;
public:
    Time ( ) { min = 0; sec = 0; };
    Time ( int m, int s ) { min = m; sec = s; };
    Time (const Time& t) { min = t.min; sec = t.sec; };
    ~Time (){};
    int get_min(){ return min; };
    int get_sec(){ return sec; };
    void set_min(int m){ min = m; };
    void set_sec(int s){ sec = s; };
    
    //перегруженные операторы
    Time& operator = (const Time&);
    Time operator -(const Time&);
    
    //глобальные функции ввода-вывода
    friend istream& operator >> (istream& in, Time& t);
    friend ostream& operator << (ostream& out, Time& t);
    friend bool operator==(const Time&t, Time&t1);
};
 
class Second
{
    friend class Time;
    int second;
public:
    Second(){ second = 0; };
    Second (int s) { second = s; };
    Second (const Second& t) { second = t.second; }
    ~Second(){};
    int get_second(){ return second; };
    void set_second(int s){ second = s; };
    
//  void subtraction(Time& f)
//  {
//      f.Time(s)-10;
//  }
    
    friend istream& operator >> (istream& in, Second& t);
    friend ostream& operator << (ostream& out, Second& t);
};
второй:

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
#include <iostream>
#include "Time.h"
 
using namespace std;
 
//перегрузка операции присваивания
Time& Time::operator =(const Time& t)
{
    //проверка на самоприсваивание
    if (&t == this)
    return *this;
    min = t.min;
    sec = t.sec;
    return *this;
}
 
//перегрузка бин операциии !!! ---ВОТ ЭТА ФУНКЦИЯ РАБОТАЮЩАЯ С ОДНИМ КЛАССОМ НУЖНО В НЕЁ ВНЕСТИ 2 КЛАСС ---!!!
Time Time::operator -(const Time& t)
{
    int temp1 = min * 60 + sec;
    int temp2 = t.min * 60 + t.sec;
    Time p;
    p.min = (temp1 - temp2) / 60;
    p.sec = (temp1 - temp2) % 60;
    return p;
}
 
istream& operator >> (istream& in, Time& t)
{
    cout << "Введите минуты: "; in >> t.min;
    cout << "Введите секунды: "; in >> t.sec;
    return in;
}
 
ostream& operator << (ostream& out, Time& t)
{
    if (t.sec >= 60)
    {
        int temp = t.sec / 60;
        t.min = t.min + temp;
        t.sec= t.sec % 60;
    }
    return (out << t.min << " : " << t.sec);
}
 
 
////////////////////////////////////  //////////////////////////////////////////
 
istream& operator >> (istream& in, Second& t)
{
    cout << "Сколько секунд Вы хотите вычесть: "; in >> t.second;
    return in;
}
 
ostream& operator << (ostream& out, Second& t)
{
    return (out << t.second);
}
ну и маин

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include "Time.h"
 
using namespace std;
 
int main(){
    setlocale (LC_ALL, "Rus");
    
    Time a; 
    Second b; 
    Time c; 
    cin >> a; 
    cin >> b; 
 
//  c = a - b; // !!! --- НУЖНО ЧТО БЫ СРАБОТАЛО ДЕЙСТВИЕ --- !!!
    cout << "a = " << a << endl; 
    cout << "b = " << b << endl; 
    cout << "c = " << c << endl; 
    
    
    return 0;
}
думаю будет много вопросов что за мазахизм и т.п, но это то что пришло в голову, если можно сделать это в одном классе буду рад услышать совета, надеюсь на вашу помощь
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.06.2017, 22:41
Ответы с готовыми решениями:

Есть два класса. Как из одного класса перенести данные в другой класс?
Есть два класса : планета и диспетчер планет. Диспетчер имеет информацию о планетах: их названия,...

Как передать входящее значение одного метода класса на возврат в другой метод того же класса?
Я самый новейший новичок. Помогите.Как передать входящее значение (количество еды) метода feed...

Из одного списка, поэлементно вычесть другой
Списки могут быть разной длины. Помогите, сам не могу

Как перенести из одного класса в другой
class Setting { static void Setting() { const string needPatch...

4
6992 / 6030 / 2738
Регистрация: 14.04.2014
Сообщений: 25,792
04.06.2017, 22:53 2
Ещё один оператор "-" с соответствующим параметром.
0
1 / 1 / 0
Регистрация: 21.01.2017
Сообщений: 20
04.06.2017, 23:07  [ТС] 3
Как я понимаю то мне в
C++
1
Time Time::operator -(const Time& t)
нужно в temp2 как то поставить t.second
но не доходить мысль как это сделать.
А можно поподробнее куда ещё один оператор? и с каким параметром?

Добавлено через 8 минут
вот даже наверное что не могу понять, как в
C++
1
Time Time::operator -(const Time& t)
получить доступ к классу Second что бы вместо
C++
1
int temp2 = t.min * 60 + t.sec;
было
temp2 = t.second
0
6992 / 6030 / 2738
Регистрация: 14.04.2014
Сообщений: 25,792
04.06.2017, 23:14 4
Лучший ответ Сообщение было отмечено Golovano-v как решение

Решение

C++
1
Time Time::operator -(const Second& t)
И дальше делай желаемые вычисления.
1
1 / 1 / 0
Регистрация: 21.01.2017
Сообщений: 20
04.06.2017, 23:28  [ТС] 5
Спасибо за помощь!! все получилось
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.06.2017, 23:28

Как передать параметры из одного класса в другой?
Есть класс Phase, в нем метод: public static double phase(double pdate, RefDouble pphaseR,...

Как передать переменную из одного класса в другой
Есть окружность, а по ней в свою очередь движется точка. Часть кода: import javax.swing.*; ...

Как передать переменную из одного класса в другой?
Доброго времени суток. Говорю сразу, я новичек. Только начинаю свой тернистый путь. У меня...

Как передать переменные из одного класса в другой?
Привет всем! Не могу разобраться с вопросом: я создал программу в WinForms, суть ее в том, что есть...


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

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

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