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

Класс создающий другой класс (ошибка) - C++

Восстановить пароль Регистрация
 
Delacroic
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 61
04.12.2013, 12:02     Класс создающий другой класс (ошибка) #1
Начал писать прогу, суть в том, что один класс должен создавать группу объектов другого класса, написал один класс - работало, а во втором ошибка, не пойму в чем =(

Добавлено через 9 минут
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#include "stdafx.h"
#include <iostream>
#include <Windows.h>
#include <time.h>
#include <ctime>
#include <tchar.h>
#include <conio.h>
#include <sstream>
#include <locale>
#include <string>
#include <dos.h>
using namespace std;
 class machine
 {
     int i, kod;
     int sv,x;
     int qq;
     bool r;
     int xx;
 public:
     machine()
        {   time_t tm1;
            tm1 = time (NULL);
            qq=tm1;
            kod=0;
        }
            void rel(int x)
            {
                time_t tm1;
                tm1 = time (NULL);
                    do
                        {
                            tm1 = time (NULL);
                        }
                        while(qq==tm1);
                        qq=tm1;
                        if(x==0)
                            {
                                r=0;
                                kod++;
                            }
                        if (x>0)
                             r=1;
                        cout<<"Vrem'a do konca robotu= "<<x<<endl<<"rejim rabotu - "<<r<<endl<<"Kol-vo obrabotanuh detalei = "<<kod<<endl;
                
            };
 };
 
 class groupmachine
 {
     int qq;
     int ssv; 
     int *x;
     int N;
 public:
     groupmachine ()
        {
            int *x =new int[3];
            cout<<"BBeDuTe BpeM9l Pab0Tld";
            cin>>ssv;
            cout<<"BBeDuTe KoJl-BO CTAHKOB";
            cin>>N;
            for(int i=0;i<N;i++)
            x[i]=ssv;
            
        }
        void zad()
            {machine *p=new machine[N];
                time_t tm1;
                tm1 = time (NULL);
                qq=tm1;
                for(;;)
                    {
                    for(int i=0;i<N;i++)
                        (p+i)->rel(int (x[i]));
 
                    do
                        {
                            tm1 = time (NULL);
                            if(kbhit()) 
                            if(getch()==27)
                                {
                                    delete []p;
                                }
                        }
                            while(qq==tm1);
                            qq=tm1;
                            for(int i=0;i<3;i++)
                                {
                                    if(x[i]>=0)x[i]--;
                                    if(x[i]==-1)x[i]=ssv;
                                }
                    } 
            };
 };
 
 void main()
 {
     int qq;
     groupmachine *y=new groupmachine[1];
     time_t tm1;
     tm1 = time (NULL);
     qq=tm1;
 
     for(;;)
     {
         for(int i=0;i<1;i++)
             (y+i)->zad();
 
         do
            {
                tm1 = time (NULL);
                if(kbhit()) 
                if(getch()==27)
                    {
                        delete []y;
                    }
            }while(qq==tm1);
            qq=tm1;
     }
 }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
04.12.2013, 12:54     Класс создающий другой класс (ошибка) #2
а во втором ошибка,
А что за ошибка ?
Brain_Dead
 Аватар для Brain_Dead
9 / 8 / 2
Регистрация: 25.09.2013
Сообщений: 34
04.12.2013, 12:55     Класс создающий другой класс (ошибка) #3
C++
1
2
3
4
5
6
7
8
9
10
groupmachine ()
{
 int *x =new int[3];
 cout<<"BBeDuTe BpeM9l Pab0Tld";
 cin>>ssv;
 cout<<"BBeDuTe KoJl-BO CTAHKOB";
 cin>>N;
 for(int i=0;i<N;i++)
 x[i]=ssv;
}
Первое, что приходит в голову - при вводе N > 3 у тебя произойдёт выход за границы массива int x[3], после чего развалится всё остальное, что есть в программе.
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
04.12.2013, 12:58     Класс создающий другой класс (ошибка) #4
x=new int[3]
а пчму сбсно 3 штки?
Зчм тгда нужн N?
Delacroic
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 61
04.12.2013, 13:00  [ТС]     Класс создающий другой класс (ошибка) #5
Цитата Сообщение от egor2116 Посмотреть сообщение
А что за ошибка ?
Необработанное исключение в "0x00331a45" в "progect xx.exe": 0xC0000005: Нарушение прав доступа при чтении "0xcdcdcdcd".

0xcdcdcdcd - адрес x

Добавлено через 58 секунд
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
x=new int[3]
а пчму сбсно 3 штки?
Зчм тгда нужн N?
просто тестирую прогу, N задаю 1 или 2
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
04.12.2013, 13:00     Класс создающий другой класс (ошибка) #6
Опздл, млн...
grenuj
6 / 6 / 0
Регистрация: 30.11.2013
Сообщений: 25
04.12.2013, 13:02     Класс создающий другой класс (ошибка) #7
Цитата Сообщение от Delacroic Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
class groupmachine
 {
   int *x;
   int N;
public:
   groupmachine ()
   {
          int *x =new int[3];
Две переменных х. Это так и должно быть?
Delacroic
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 61
04.12.2013, 13:06  [ТС]     Класс создающий другой класс (ошибка) #8
Цитата Сообщение от grenuj Посмотреть сообщение
Две переменных х. Это так и должно быть?
Всмысле? х - указатель, а int *x; - это его объявление
grenuj
6 / 6 / 0
Регистрация: 30.11.2013
Сообщений: 25
04.12.2013, 13:09     Класс создающий другой класс (ошибка) #9
Delacroic, Это две разных переменных.
Delacroic
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 61
04.12.2013, 13:12  [ТС]     Класс создающий другой класс (ошибка) #10
Цитата Сообщение от grenuj Посмотреть сообщение
Delacroic, Это две разных переменных.
Почему? В конструкторе я объявляю некий указатель, а потом присваиваю ему конкретный адрес
grenuj
6 / 6 / 0
Регистрация: 30.11.2013
Сообщений: 25
04.12.2013, 13:20     Класс создающий другой класс (ошибка) #11
Delacroic, Нужно заменить эту строчку:
Цитата Сообщение от Delacroic Посмотреть сообщение
int *x =new int[3];
На эту:
C++
1
x =new int[3];
Слово int убрать.
Теперь х - это одна и та же переменная
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
04.12.2013, 13:24     Класс создающий другой класс (ошибка) #12
Слшй, чт тбе гврят! Ты нпсал втрой раз int* - т объявл втрю прмнню!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.12.2013, 13:25     Класс создающий другой класс (ошибка)
Еще ссылки по теме:

C++ Ошибка в выводе данных, класс выводит правильно, а класс в классе - нет
Ошибка: "Переопределение; Другой класс хранения" C++
Отдельно класс данных, класс формул и главный класс C++

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

Или воспользуйтесь поиском по форуму:
Delacroic
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 61
04.12.2013, 13:25  [ТС]     Класс создающий другой класс (ошибка) #13
grenuj, оу, заработало =) Спасибо=)))
Yandex
Объявления
04.12.2013, 13:25     Класс создающий другой класс (ошибка)
Ответ Создать тему
Опции темы

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