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

работа с указателями и классами - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ доступ к конкретным элементам, хранящимся в двух структурах(одна вложена в другую) http://www.cyberforum.ru/cpp-beginners/thread257115.html
Доброго времени суток всем. Передо мной стоит такая задача - нужно сделать программу, которая бы строила большое количество точек - с различными координатами, и в итоге, разбивала их на определенные класстеры - в зависимости от расстояния. Рассматриваю Декартовую систему координат, для представления точек решил использовать структуры. Одна из которых содержит индексы точек - вторая координаты,...
C++ Метод Ньютона в решении СНАУ РЕбят, помогите с прогой. Нужна прога которая решает СНАУ методом Ньютона. Без нее не защищусь. Заранее спасибо. http://www.cyberforum.ru/cpp-beginners/thread257107.html
Массивы C++
задачи на действие с массивами 1)Удаление элемента массива 2)Среднее значение элементов массива 3)Поиск максимального и минимального элемента массива 4)заполнения массивами случайными числами в диопазоне от 100 до 500 5)Сумма (произведение)вектора 6)заполнение массива с клавиатуры
Вывести вертикальную гистограмму длин слов введенного текста C++
Вывести вертикальную гистограмму длин слов введенного текста
C++ Построить светящийся разными цветами треугольник http://www.cyberforum.ru/cpp-beginners/thread257058.html
построить,светящийся разными цветами треугольник
C++ В данной квадратной матрице порядка 17 указать индексы всех элементов с наименьшим значением В данной квадратной матрице порядка 17 указать индексы всех элементов с наименьшим значением подробнее

Показать сообщение отдельно
TheAthlete
 Аватар для TheAthlete
151 / 151 / 12
Регистрация: 31.08.2010
Сообщений: 529
14.03.2011, 16:24     работа с указателями и классами
Здравствуйте! Пишу класс для работы с датами, необходимо выполнять различные операции с датами.

Собственно код:

Date.h

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
#ifndef DATE_H
#define DATE_H
 
#include <ctime>
 
class Date {
private:
    int day; // день
    int month; // месяц
    int year; // год
    
    tm* timeinfo;
 
    time_t seconds;
    time_t rawtime;
public:
    Date(): day(0), month(0), year(0) {}
    Date(int d, int m, int y);
    ~Date() { delete timeinfo; }
 
    time_t getSeconds() const { return seconds; }
    tm* getTimeInfo() const { return timeinfo; }
    void printTimeInfo(); // выводим на экран значения структуры timeinfo
};
#endif
Date.cpp

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
#include "Date.h"
#include <iostream>
 
using std::cout;
using std::endl;
 
Date::Date(int d, int m, int y) {
    day = d;
    month = m;
    year = y;
 
    time( &rawtime );
    timeinfo = localtime( &rawtime );
 
    timeinfo->tm_year = y - 1900;
    timeinfo->tm_mon = m - 1;
    timeinfo->tm_mday = d;
 
    seconds = mktime(timeinfo);
}
 
void Date::printTimeInfo() {
    cout << "День: " << timeinfo->tm_mday << endl;
    cout << "Месяц: " << timeinfo->tm_mon + 1 << endl;
    cout << "Год: " << timeinfo->tm_year + 1900 << endl;
    cout << "День недели: " << timeinfo->tm_wday << endl;
    cout << "День года: " << timeinfo->tm_yday + 1 << endl;
}
main.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include "Date.h"
 
using std::cout;
using std::endl;
 
int main() {
            Date data_nach(7, 6, 2002);
    Date data_kon(25, 6, 2002);
 
    data_nach.printTimeInfo();
    cout << "===============" << endl;
    
    data_kon.printTimeInfo();
    cout << "===============" << endl;
 
    return 0;
}
Но столкнулся с небольшой проблемой:

вывод для данной программы будет следующий:
День: 7
...
=======
День: 7
...

т.е. день не меняется, вероятно здесь где-то утечка памяти

А если сделать следующим образом, то все нормально:

C++
1
2
3
4
5
6
7
Date data_nach(7, 6, 2002);
    data_nach.printTimeInfo();
    cout << "===============" << endl;
    
    Date data_kon(25, 6, 2002);
    data_kon.printTimeInfo();
    cout << "===============" << endl;
Вывод:

День: 7
...
=======
День: 25
...

Кто знает, в чем проблема
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 21:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru