Форум программистов, компьютерный форум CyberForum.ru

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

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

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

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

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

поиск по форуму конечно что то похожее выдает но разобраться я так и не смог
как разбить то что выдает time и присвоить время (часы минуты секунды) трем разным переменным класса
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.10.2015, 10:34     Попытка разобраться с классами в 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, размер строк и столбцов и состояние ошибки. Определить...

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

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

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

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

ну предварительно создав экземпляр класса конечно
daslex
1271 / 516 / 106
Регистрация: 02.08.2011
Сообщений: 2,665
05.10.2015, 11:21     Попытка разобраться с классами в C++ #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; //Они уже здесь
}
Renji
1854 / 1272 / 290
Регистрация: 05.06.2014
Сообщений: 3,630
05.10.2015, 11:23     Попытка разобраться с классами в C++ #11
Цитата Сообщение от Sibmax1988 Посмотреть сообщение
"1) Конструктор имеет указатель this указывающий на конструируемый объект." а если я буду делать это присвоение в методе main то мне получается нужен будет метод типа settшme() так как доступа я иметь не буду из main к ним?
В main есть доступ через имя_объекта.имя_поля=новое_значение. Только "private:" перед этим полем убрать надо, иначе компилятор ругаться будет.
Sibmax1988
3 / 3 / 0
Регистрация: 22.09.2015
Сообщений: 121
05.10.2015, 11:32  [ТС]     Попытка разобраться с классами в C++ #12
Renji, ну да то что private если убрать то я знаю что доступ будет
но если его оставить то менять данные только с помощью метода setTime
я правильно думаю или заблуждаюсь?
Renji
1854 / 1272 / 290
Регистрация: 05.06.2014
Сообщений: 3,630
05.10.2015, 11:37     Попытка разобраться с классами в C++ #13
Ну да, если данные - private, то менять их можно только через public методы. По крайней мере, "легальными" методами. Так то, при желании, ограничение можно легко обойти. Но это уже будет из серии "в гамаке и стоя" (сам себе преграду поставил, сам ее мужественно преодолеваешь).
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6442 / 3081 / 306
Регистрация: 04.12.2011
Сообщений: 8,482
Записей в блоге: 4
05.10.2015, 11:39     Попытка разобраться с классами в C++ #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 вечно я опаздываю
Ну да пусть лежит, как вариант

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

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

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

Добавлено через 1 минуту
Renji, на русском?
Renji
1854 / 1272 / 290
Регистрация: 05.06.2014
Сообщений: 3,630
05.10.2015, 11:50     Попытка разобраться с классами в C++ #18
Цитата Сообщение от Sibmax1988 Посмотреть сообщение
Renji, на русском?
А по русским заглавиям книг не ясно?
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6442 / 3081 / 306
Регистрация: 04.12.2011
Сообщений: 8,482
Записей в блоге: 4
05.10.2015, 12:00     Попытка разобраться с классами в C++ #19
Цитата Сообщение от Sibmax1988 Посмотреть сообщение
посоветуй книгу где ооп на c++ написано для таких как я?
Тут же ключевое "для таких как я". Вам и карты в руки. В шапке раздела о литературе сказано достаточно внушительно, а дальше - пробуйте. Я порекомендую авторов для пробы:
Т.А. Павловская
Герберт Шилдт
Но что Вам будет лучше никто не знает. Пробуйте как можно больше разных книг.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.10.2015, 12:29     Попытка разобраться с классами в C++
Еще ссылки по теме:

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

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

неудачная попытка программы - C++
Всем здравствуйте раньше программировал на фортране.Сейчас перехожу на Си++ не могу сделать элементарную вещь.Мб туплю где-то дело...

Попытка создать обработку событий - C++
Попытался создать что-то наподобии сигналов и слотов. Вот мой файл Event.h #ifndef ELEM_H #define ELEM_H #include...

первая программа попытка номер три) - C++
здравствуйте! начал читать книгу по c++ там предлагается написать программу для определения возраста. в книге она выглядит так : int main...


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

Или воспользуйтесь поиском по форуму:
gru74ik
Модератор
Эксперт CЭксперт С++
4102 / 1747 / 196
Регистрация: 20.02.2013
Сообщений: 4,856
Записей в блоге: 21
05.10.2015, 12:29     Попытка разобраться с классами в C++ #20
Sibmax1988, Стивен Прата - Язык программирования C++. Лекции и упражнения, 6-е изд. - 2012
Yandex
Объявления
05.10.2015, 12:29     Попытка разобраться с классами в C++
Ответ Создать тему
Опции темы

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