Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.02.2018, 18:07   #1
Progатель
Новичок
Джуниор
 
Регистрация: 24.02.2018
Сообщений: 1
По умолчанию Объясните почему главная функция не видит переменные созданного класа

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cmath>
#include <cstdlib>

using namespace std;

void Vlogenie(int &hor, int &min, int &sec)//ввод данных
{
cout << "Введите ЧЧ : ММ: СС " << endl;
cin >> hor;cout << ":";cin >> min;cout << ":";cin >> sec;
}


class Time
{
private:
int hor, min, sec;
void time()//оптимизация переменных
{
if (sec > 59)
{
min = min + sec / 60;
sec = sec % 60;
}
if (min > 59)
{
hor = hor + min / 60;
min = min % 60;
}
if (hor > 23)
{
hor = hor % 24;
}
}
public:
//конструктор
Time(int _hor, int _min, int _sec)
{
setTime(_hor, _min, _sec);
}
//Вывод на экран
void ShowTime()
{
cout << hor << " : " << min << " : " << sec << endl;
}
//Установка времени
void setTime(int _hor, int _min, int _sec)
{
hor = _hor;
min = _min;
sec = _sec;
}
//Оператор присваивания
Time operator = (const Time& obj)
{
hor = obj.hor;
min = obj.min;
sec = obj.sec;
return *this;
}
//сдвиг времени в меньшую сторону
Time operator - (const Time& t2)
{
int sec_ = sec - t2.sec;
int min_ = min - t2.min;
int hor_ = hor - t2.hor;
if (sec_ < 0)
sec_ = 60 - sec_ % 60;
min_ = min_ - (1 + abs(sec / 60));
if (min_ < 0)
min_ = 60 - min_ % 60;
hor_ = hor_ - (1 + abs(min / 60));
if (hor_ < 0)
hor_ = 24 - hor_ % 24;
}
//Сдвиг времени в большую сторону
Time operator + (const Time& t2)
{
int sec_ = sec + t2.sec;
int min_ = min + t2.min;
int hor_ = hor + t2.hor;
if (sec > 59)
{
min = min + sec / 60;
sec = sec % 60;
}
if (min > 59)
{
hor = hor + min / 60;
min = min % 60;
}
if (hor > 23)
{
hor = hor % 24;
}
}
};
int main()
{
int choice, change;
int hor = 0;
int min = 0;
int sec = 0;
Time T;
Time time2;
Time time3;
cout << "Желаете задать время?" << endl;
in: cout << "1-Да,2-Нет" << endl;
cin >> choice;
if (choice == 1)
{
Vlogenie(hor, min, sec);
T.setTime(hor, min, sec);
T.ShowTime();
cout << T.ShowTime() << endl;
system("pause");
system("cls");
}
if (choice != 0)
goto in;
choice = 0;
cout << "Какие операции хотите сделать" << endl;
cout << "1-сдвинуть время,2-вычислить разницу,3-выход" << endl;
cin >> choice;
if (choice == 1)
{
cout << "В большую сторону-1,в меньшую сторону-2" << endl;
cin >> change;
if (change == 1)
Vlogenie(hor, min, sec);
time2.setTime(hor, min, sec);
T = T + time2;
T.ShowTime();
cout << T.ShowTime << endl;
if (change == 2)
Vlogenie(hor, min, sec);
time2.setTime(hor, min, sec);
T = T - time2;
T.ShowTime();
cout << T.ShowTime << endl;
}
if (choice == 2)
//Разница будет операций в главной функции,а не методом класса
Vlogenie(hor, min, sec);
time2.setTime(hor, min, sec);
time3 = T - time2;
time3.ShowTime();
cout << time3.ShowTime << endl;
if (choice == 3)
return 0;
}
Progатель вне форума Ответить с цитированием
Старый 24.02.2018, 18:30   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Не знаю, что вы имели в виду, но это
Код:
Vlogenie(hor, min, sec);
просто тупое создание нового временного объекта без имени и т.д. Скорее всего нормальные компиляторы это просто выкинут.

Ваши операторы +/- обявлены как возвращающие объект, но ничего не возвращают... Вы сообщения компиялтора читали?

Последний раз редактировалось p51x; 24.02.2018 в 18:32.
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу понять, почему не видит переменную функция Dovlet JavaScript, Ajax 11 21.08.2016 00:09
Почему не работает функция для динамически созданного объекта Arassir JavaScript, Ajax 2 19.09.2011 15:27
Delphi 2010 не видит файлы dcr из созданного мной пакета DrAndriy Общие вопросы Delphi 4 18.08.2010 12:18
Функция чтения из динамически созданного Edit Grandistok Общие вопросы Delphi 11 10.01.2010 23:13
главная форма не видит форму редактирования, хелп плз malayka БД в Delphi 2 09.12.2009 01:29