Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Sibmax1988
3 / 3 / 0
Регистрация: 22.09.2015
Сообщений: 121
#1

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

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

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

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

Знакомство с классами, попытка реализации класса матриц - C++
Собственно выдает следующую вещь "Необработанное исключение в "0x00411805" в "class_test_inheritance.exe": 0xC0000005: Нарушение прав...

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

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

Не могу разобраться с классами - C++
InitD3DWindow.h ------------------- class InitD3DWindow { protected: //Initialize the app Window bool InitWindow();

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

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

21
Redzep
197 / 133 / 54
Регистрация: 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 / 54
Регистрация: 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
2004 / 1372 / 309
Регистрация: 05.06.2014
Сообщений: 3,906
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
2004 / 1372 / 309
Регистрация: 05.06.2014
Сообщений: 3,906
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
1285 / 529 / 109
Регистрация: 02.08.2011
Сообщений: 2,750
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
2004 / 1372 / 309
Регистрация: 05.06.2014
Сообщений: 3,906
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
2004 / 1372 / 309
Регистрация: 05.06.2014
Сообщений: 3,906
05.10.2015, 11:37 #13
Ну да, если данные - private, то менять их можно только через public методы. По крайней мере, "легальными" методами. Так то, при желании, ограничение можно легко обойти. Но это уже будет из серии "в гамаке и стоя" (сам себе преграду поставил, сам ее мужественно преодолеваешь).
0
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6503 / 3142 / 307
Регистрация: 04.12.2011
Сообщений: 8,673
Записей в блоге: 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 вечно я опаздываю
Ну да пусть лежит, как вариант

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

Добавлено через 4 минуты
IGPIGP, может книгу можешь посоветовать?
0
05.10.2015, 11:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.10.2015, 11:44
Привет! Вот еще темы с ответами:

Не получается разобраться с абстрактными классами - C++
Всем привет, у меня пара вопросов, не получается почему скомпилить файл. Ругается, видимо что то не понимаю до конца с абстрактными...

Первая попытка - C++
Ребят, начинаю писать первую игру, ее смысл в том, что ты играешь человечком, бегающем внизу экрана, и сверху на тебя падают камни(бомбы) и...

Попытка написать простенькую БД - C++
Хочу попробовать написать простенькую БД, но есть некоторые вопросы по реализации. Немогу придумать как реализовать: У каждой ячейки...

Моя первая попытка - C++
Недавно начала осваивать С++... От бумажного учебника перешла к практике, моя первая попытка решить задачу провалилась... Скажите, в чем...


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

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

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