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

Ошибки в структуре Date. Каким-то образом перетекают значения между екземплярами. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Преобразование в Unicode http://www.cyberforum.ru/cpp-beginners/thread625240.html
Как преобразовать тип Buffer ,чтобы не было ошибки: error C2664: int CEdit::GetLine(int,LPTSTR,int) const: невозможно преобразовать параметр 2 из "char *" в "LPTSTR" строка: m_edit.GetLine(0,Buffer,BuffLenght); char* Buffer = new char; m_edit.GetLine(0,Buffer,BuffLenght); Спасибо
C++ Вычислить значение логического выражения Ребят помогите решить задачу на C++ (Программа wxDev-C++) С того (Д.М. Златопольский - Сборник задач по программированию) Задача 3.8 а. Вычислить значение логического выражения при следующих значениях логических величин X,Y и Z:X=ложь,Y=истина,Z=ложь; а) X и не (Z или Y) или не Z; ---------------------------- Пробовал несколько раз решить эту задачу всеразно возникаю ошибки текс программы... http://www.cyberforum.ru/cpp-beginners/thread625221.html
C++ Разработать алгоритм вычисления корня n-ой степени из комплексного числа
В общем нужно на любом языке накатать программу: Разработать алгоритм вычисления корня n-ой степени из комплексного числа. Помогите мне пожалуйста:pardon:
C++ Найти номер элемента, значение которого наименее отклоняется от среднего значения
2) Дан линейный массив А, состоящий из N вещественных чисел. Составить программу, которая находит номер элемента, значение которого наименее отклоняется от среднего значения всех элементов массива.
C++ Делим консоль на несколько частей (ввод+вывод) http://www.cyberforum.ru/cpp-beginners/thread625178.html
Суть такова... делаю консоль для онлайн игрушки, разделил её на 4 визуальных части: Top, Bottom в две полоски сверху и снизу, и центральную часть на две части, Left, Right. Вывод во все части работает нормально, средние части прокручиваются в нужном месте, но хотелось бы сделать в нижней части ввод в консоль... какие то левые наработки начал делать, но плохо разобрался с InputStd вот...
C++ Программа расчета интеграла Программа расчет определенного интеграла по формулам Чебышева для случая семи узлов. Вообще не могу понять,ни в одном учебники не нашел такого случая,мб кто-то знает,помогите пожалуйста. подробнее

Показать сообщение отдельно
tihonya
11 / 7 / 1
Регистрация: 30.05.2012
Сообщений: 107

Ошибки в структуре Date. Каким-то образом перетекают значения между екземплярами. - C++

18.07.2012, 00:55. Просмотров 374. Ответов 5
Метки (Все метки)

У меня получилась вот такая структура:
main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//#include "stdafx.h"
#include "Date_class.h"
void main(){
 
    Date_class K(22,13,82);
    K.print();
    K.setData(22,8,82);
    K.print();  
    Date_class T(35325432);
    T.print();
    K.print();
    Date_class Bum;
    Bum.print();
    Date_class B(K);
    B.print();
    system("pause");
}
Date_class.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
26
27
#include "stdafx.h"
#pragma once
class Date_class
{
time_t seconds;
tm* timeinfo;
    bool chekchange(int &,int &,int &);
    void copyDate(int &,int &,int &);
public:
    Date_class();
    Date_class(int);
    Date_class(int,int,int);
 
    tm* getData();
    const time_t&  getTime();
    void setData();
    void setData(int,int,int);
    void setData(tm*);
    void setTime(int);
    void setTime(time_t);
    void setTime(tm*);
    tm * newtm();
    time_t PresentTime();
    void print();
    
    ~Date_class();
};
Date_class.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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include "Date_class.h"
Date_class::~Date_class()
{// delete timeinfo;
    }
    Date_class::Date_class(){
        setTime(PresentTime());
        setData();
    }
    Date_class::Date_class(int seconds){
        setTime(seconds);
        setData();
    }
    Date_class::Date_class(int day,int monce,int year){
        setTime(PresentTime());
        setData();
        setData(day,monce,year);
    }
    tm* Date_class::getData(){
        return timeinfo;
    }
    const time_t& Date_class::getTime (){
        return this->seconds;
    }
    void Date_class::setData(){
        this->timeinfo=localtime(&getTime());
    }
    void Date_class::setData(tm *timeinfo){
        *this->timeinfo=*timeinfo;
    }
    void Date_class::copyDate(int &day,int &monce,int &year){
        this->timeinfo->tm_mday=day;
        this->timeinfo->tm_mon=monce;
        this->timeinfo->tm_year=year;
        setTime(timeinfo);
    }
    void Date_class::setData(int day,int monce,int year){
        tm *tmp=newtm();
 
        copyDate(day,monce,year);
        if(chekchange(day,monce,year)){
        delete tmp; return;}
        else{cout<<"This date does not exist, we use the current date.\n";
        setData(tmp); setTime(timeinfo);
        delete tmp; return;} }
    
    tm * Date_class::newtm(){
    tm *tmp=new tm;  *tmp=*timeinfo;
    return tmp;
    }
 
    bool Date_class::chekchange(int &day,int &monce,int &year){
        if ((timeinfo->tm_mday==day)&&(timeinfo->tm_mon==monce)&&(timeinfo->tm_year==year))
        return true; else return false;
    }
    time_t Date_class::PresentTime(){
        return time(NULL);
    }
 
    void Date_class::setTime(int seconds){
        this->seconds=seconds;
    }
    void Date_class::setTime(time_t seconds){
        this->seconds=seconds;
    }
    void Date_class::setTime(tm* timeinfo){
        this->seconds=mktime(timeinfo);
    }
    void Date_class::print(){
    //setData();
        cout<<"Current Datetime:"<<asctime(this->timeinfo)<<endl;
    }
stdafx.h
C++
1
2
3
4
5
6
#pragma once    
#include <iostream>
#include <ctime>
#include <time.h>
 
using namespace std;
Если запустить программу как есть то на экране появится это:
Ошибки в структуре Date. Каким-то образом перетекают значения между екземплярами.
как есть означает закомментированная строка 69 в Date_class.cpp - setData() метод который заново определяет структуру tm в экземпляре класса в зависимости от значения переменной time_t seconds;
которая в свою очередь означает количество секунд, по моему от 70-го года, до настоящего момента.

С другой стороны если эту функцию все таки запускать(что само по себе не правильно, зачем она нужна в принте) То все работает как надо, по крайней мере внешне.
Вот так:
Ошибки в структуре Date. Каким-то образом перетекают значения между екземплярами.

И есть еще одна проблема наработает деструктор класса, он закомментирован - вылетает типо с доступом проблема. Думаю что эти две ошибки могут быть связаны.

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