Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Sibmax1988
3 / 3 / 0
Регистрация: 22.09.2015
Сообщений: 121
#1

Попытка разобраться с классами в C++

05.10.2015, 10:34. Просмотров 657. Ответов 21
Метки нет (Все метки)

Доброго времени суток
Читаю книгу Дейтел С++ дошел до классов и в первом же упражнении впал в ступор
Помогите кто чем сможет
Текст задания:
"Создайте конструктор способный использовать текущее время, даваемое функцией time(), объявленной в заголовочном файле time.h стандартной библиотеки С, чтобы задавать начальные значения объекту класса Time".

поиск по форуму конечно что то похожее выдает но разобраться я так и не смог
как разбить то что выдает time и присвоить время (часы минуты секунды) трем разным переменным класса
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.10.2015, 10:34
Ответы с готовыми решениями:

Обмен информацией между классами. Попытка 2
Первая тема превратилась в гору флуда, попробую еще раз. Модераторы, простите...

Знакомство с классами, попытка реализации класса матриц
Собственно выдает следующую вещь "Необработанное исключение в "0x00411805" в...

Не могу разобраться с классами
InitD3DWindow.h ------------------- class InitD3DWindow { protected: ...

Помогогите разобраться с классами
Прошу доступно объяснить: частные и общие данные, конструктор, деструктор,...

Помогите разобраться с классами в C++
Есть задание по ООП С++ Используя классы создать кольцо.Записи кольца включают...

21
Redzep
197 / 133 / 88
Регистрация: 21.12.2014
Сообщений: 369
05.10.2015, 10:38 #2
Как-то так.
C++
1
2
3
4
ClassName::ClassName () : Object (time())
{
// Тело конструктора
}
0
Sibmax1988
3 / 3 / 0
Регистрация: 22.09.2015
Сообщений: 121
05.10.2015, 10:45  [ТС] #3
все равно не понят ничего
я представляю себе задачу как то так
вот есть конструктор
C++
1
2
3
4
5
6
7
8
9
class Time
{
public:
  Time();
private:
  int hour;
  int minute;
  int second;
};
теперь как то с помощью time нужно присваивать значения трем переменным
0
Redzep
197 / 133 / 88
Регистрация: 21.12.2014
Сообщений: 369
05.10.2015, 10:46 #4
Цитата Сообщение от Sibmax1988 Посмотреть сообщение
как разбить то что выдает time и присвоить время (часы минуты секунды) трем разным переменным класса
Тут примеры есть https://ru.wikipedia.org/wiki/Time.h
1
Sibmax1988
3 / 3 / 0
Регистрация: 22.09.2015
Сообщений: 121
05.10.2015, 10:55  [ТС] #5
Redzep, я это тоже находил и читал
но так и не разобрался как все в итоге привести к рабочему виду программы

Добавлено через 5 минут
Redzep, я даже нашел рабочую программу но как она работает не понимаю
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Time
{
public:
  Time();
private:
  int hour;
  int minute;
  int second;
};
 
Time::Time()
{
    time_t rawtime;
    struct tm * timeinfo;
 
    time ( &rawtime );
    timeinfo = localtime ( &rawtime );
 
    second = timeinfo->tm_sec;
    minute = timeinfo->tm_min;
    hour = timeinfo->tm_hour;
}
0
Renji
2102 / 1543 / 470
Регистрация: 05.06.2014
Сообщений: 4,466
05.10.2015, 11:05 #6
Цитата Сообщение от Sibmax1988 Посмотреть сообщение
Redzep, я даже нашел рабочую программу но как она работает не понимаю
1) Конструктор имеет указатель this указывающий на конструируемый объект.
2) this->bla_bla_bla - синоним bla_bla_bla, если в объекте есть это bla_bla_bla. Соответственно, строчка second = timeinfo->tm_sec; - синоним this->second = timeinfo->tm_sec; и пишет внутрь конструируемого объекта.
3) Если работа строчки second = timeinfo->tm_sec; все равно не ясна, вам рано лезть в конструкторы.
0
Sibmax1988
3 / 3 / 0
Регистрация: 22.09.2015
Сообщений: 121
05.10.2015, 11:09  [ТС] #7
Renji, я так понимаю timeinfo это как экземпляр класса и c помощью -> мы через указатель обращаемся к его переменным?

не понятны вот эти 4 строки

C++
1
2
3
4
5
 time_t rawtime;
 struct tm * timeinfo;
 
 time ( &rawtime );
 timeinfo = localtime ( &rawtime );
0
Renji
2102 / 1543 / 470
Регистрация: 05.06.2014
Сообщений: 4,466
05.10.2015, 11:13 #8
time (с маленькой буквы) - функция. timeinfo - указатель на структуру типа tm. А структура да, тоже самое что класс, только у нее все по умолчанию публичное.
0
Sibmax1988
3 / 3 / 0
Регистрация: 22.09.2015
Сообщений: 121
05.10.2015, 11:20  [ТС] #9
Renji, вы написали
"1) Конструктор имеет указатель this указывающий на конструируемый объект." а если я буду делать это присвоение в методе main то мне получается нужен будет метод типа settшme() так как доступа я иметь не буду из main к ним?

ну предварительно создав экземпляр класса конечно
0
daslex
1291 / 535 / 177
Регистрация: 02.08.2011
Сообщений: 2,756
05.10.2015, 11:21 #10
Цитата Сообщение от Sibmax1988 Посмотреть сообщение
теперь как то с помощью time нужно присваивать значения трем переменным
кокретно в том случае можно так

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <cstring>
class Time
{
public:
  Time(const int x, const int y, const int z):hour(x),minute(y),second(z){};
  void Show();
private:
  int hour;
  int minute;
  int second;
};
 
void Time::Show(){
    std::cout<<hour<<":"<<minute<<":"<<second<<"\n";
}
 
int main(){
   Time T ={5,23,99};
   T.Show();
}
А в задаче
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <cstring>
class Time
{
public:
  Time();
  void Show();
private:
  int hour;
  int minute;
  int second;
};
 
/*Тут забираете нужные значения и отдаете их в переменные класса*/
Time::Time(){
    this->hour = 12;   
    this->minute = 26;
    this->second=55;
}
 
int main(){
   Time T2; //Они уже здесь
}
0
Renji
2102 / 1543 / 470
Регистрация: 05.06.2014
Сообщений: 4,466
05.10.2015, 11:23 #11
Цитата Сообщение от Sibmax1988 Посмотреть сообщение
"1) Конструктор имеет указатель this указывающий на конструируемый объект." а если я буду делать это присвоение в методе main то мне получается нужен будет метод типа settшme() так как доступа я иметь не буду из main к ним?
В main есть доступ через имя_объекта.имя_поля=новое_значение. Только "private:" перед этим полем убрать надо, иначе компилятор ругаться будет.
0
Sibmax1988
3 / 3 / 0
Регистрация: 22.09.2015
Сообщений: 121
05.10.2015, 11:32  [ТС] #12
Renji, ну да то что private если убрать то я знаю что доступ будет
но если его оставить то менять данные только с помощью метода setTime
я правильно думаю или заблуждаюсь?
0
Renji
2102 / 1543 / 470
Регистрация: 05.06.2014
Сообщений: 4,466
05.10.2015, 11:37 #13
Ну да, если данные - private, то менять их можно только через public методы. По крайней мере, "легальными" методами. Так то, при желании, ограничение можно легко обойти. Но это уже будет из серии "в гамаке и стоя" (сам себе преграду поставил, сам ее мужественно преодолеваешь).
0
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
7045 / 3346 / 452
Регистрация: 04.12.2011
Сообщений: 9,304
Записей в блоге: 5
05.10.2015, 11:39 #14
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
#include <iostream>
#include "time.h"
using namespace std;
struct MyTime{
time_t curTime64;
int day;
int month;
int year;
int hours;
int minutes;
int seconds;
MyTime(){
curTime64=time(NULL);
tm  *tm_struct_now = localtime(&curTime64);
day=tm_struct_now->tm_mday;
month=tm_struct_now->tm_mon;
year=tm_struct_now->tm_year+1900;
hours=tm_struct_now->tm_hour;
minutes=tm_struct_now->tm_min;
seconds=tm_struct_now->tm_sec;
}
void printFormatRusSimplified()
{
cout<<day <<"/";
cout<<month <<"/";
cout<<year  <<endl;
cout<<hours <<":";
cout<<minutes <<":";
cout<<seconds;
}
};
 
int main() {
MyTime mytime;
mytime.printFormatRusSimplified();
cout<<endl;
system("pause");
return 0;
}
Sibmax1988, вообще классы в c++ это не последняя тема и тут лучше тренироваться на кошках. Fricky - очень неплохой кошак. Думаю его "Meow" успели полюбить все кто его слышал. Даже не весной.
А попытка смешать вступление в классы с разбором Си-шной библиотеки time.h не красит авторов книги (имхо).

Не по теме:

ps вечно я опаздываю :D
Ну да пусть лежит, как вариант :pardon:

0
Sibmax1988
3 / 3 / 0
Регистрация: 22.09.2015
Сообщений: 121
05.10.2015, 11:44  [ТС] #15
Renji, я наверное уже надоел поэтому задам последний вопрос
посоветуй книгу где ооп на c++ написано для таких как я?
т е которые только знакомятся с ооп и тп

Добавлено через 4 минуты
IGPIGP, может книгу можешь посоветовать?
0
Renji
2102 / 1543 / 470
Регистрация: 05.06.2014
Сообщений: 4,466
05.10.2015, 11:45 #16
Цитата Сообщение от Sibmax1988 Посмотреть сообщение
Renji, я наверное уже надоел поэтому задам последний вопрос
посоветуй книгу где ооп на c++ написано для таких как я?
Тут целый раздел с литературой есть. Ничего конкретного порекомендовать не могу, так как основы учил в кружке, а не самостоятельно по книгам.
0
Sibmax1988
3 / 3 / 0
Регистрация: 22.09.2015
Сообщений: 121
05.10.2015, 11:46  [ТС] #17
IGPIGP,
потому что про это не слышал

Sibmax1988, вообще классы в c++ это не последняя тема и тут лучше тренироваться на кошках. Fricky - очень неплохой кошак. Думаю его "Meow" успели полюбить все кто его слышал. Даже не весной.

Добавлено через 1 минуту
Renji, на русском?
0
Renji
2102 / 1543 / 470
Регистрация: 05.06.2014
Сообщений: 4,466
05.10.2015, 11:50 #18
Цитата Сообщение от Sibmax1988 Посмотреть сообщение
Renji, на русском?
А по русским заглавиям книг не ясно?
1
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
7045 / 3346 / 452
Регистрация: 04.12.2011
Сообщений: 9,304
Записей в блоге: 5
05.10.2015, 12:00 #19
Цитата Сообщение от Sibmax1988 Посмотреть сообщение
посоветуй книгу где ооп на c++ написано для таких как я?
Тут же ключевое "для таких как я". Вам и карты в руки. В шапке раздела о литературе сказано достаточно внушительно, а дальше - пробуйте. Я порекомендую авторов для пробы:
Т.А. Павловская
Герберт Шилдт
Но что Вам будет лучше никто не знает. Пробуйте как можно больше разных книг.
1
sourcerer
Модератор
Эксперт CЭксперт С++
4825 / 2017 / 316
Регистрация: 20.02.2013
Сообщений: 5,409
Записей в блоге: 24
Завершенные тесты: 1
05.10.2015, 12:29 #20
Sibmax1988, Стивен Прата - Язык программирования C++. Лекции и упражнения, 6-е изд. - 2012
1
05.10.2015, 12:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.10.2015, 12:29

Не могу разобраться с функциями и классами
Уважаемые гуру! Подскажите, пожалуйста, мне такой вопрос. Пишу небольшое...

Разобраться с вложенными классами-шаблонами
Есть код (Стивен Дьюхерст, С++ священные знания): template &lt;class T&gt;...

Не могу разобраться с классами и освобождением памяти
Есть задача. Создать класс матрица Данный класс содержит указатель на float,...


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

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

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