0 / 0 / 0
Регистрация: 11.10.2011
Сообщений: 30
1

массвив объектов класса

23.03.2012, 20:00. Показов 505. Ответов 7
Метки нет (Все метки)

Доброго времени суток.

file.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
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
class oblast {
protected:
    char obl_name[20];
    char country[20];
public:
    oblast(void);
    oblast(char*,char*);
    oblast(oblast &);
    ~oblast(void);
    void obl_set(char*,char*);
    void obl_show(void);
};
 
class misce: public oblast {
protected:
    int koord_shurota;
    int koord_dovgota;
public:
    misce(void);
    misce(int,int);
    misce(misce &);
    ~misce(void);
    void getkoord(void);
    void setkoord(int,int);
};
 
 
class misto: public oblast{
protected:
    char city_name[20];
    long naselennia;
public:
    misto(void);
    misto(char*,long);
    misto(misto &);
    ~misto(void);
    void city_show(void);
    void city_set(char*,long);
};
 
class megapolis: public misto{
protected:
    char data_zasn[20];
public:
    megapolis(void);
    megapolis(char*);
    megapolis(megapolis &);
    void setdata(char*);
    void getdata(void);
    void show_all(void);
    void to_file(char*);
    void from_file(char*);
    ~megapolis(void);
};
file.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
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
#include <iostream>
#include <fstream>
#include <cstring>
#include "oblast.h"
 
 
using namespace std;
 
oblast::oblast(void)
{
    strcpy_s(obl_name," ");
    strcpy_s(country," ");
}
oblast::oblast(char *oname, char *countr)
{
    strcpy_s(obl_name,oname);
    strcpy_s(country,countr);
}
oblast::oblast(oblast &obj)
{
    strcpy_s(obl_name,obj.obl_name);
    strcpy_s(country,obj.country);
}
oblast::~oblast(void)
{
    cout<<"Деструктор: "<<obl_name<<endl;
}
void oblast::obl_show(void)
{
    cout<<"Назва областi: "<<obl_name<<endl;
    cout<<"Країна: "<<country<<endl;
}
void oblast::obl_set(char *oname, char *countr)
{
    strcpy_s(obl_name,oname);
    strcpy_s(country,countr);
}
 
misce::misce(void)
{
    koord_shurota=0;
    koord_dovgota=0;
}
misce::misce(int shurota,int dovgota)
{
    koord_shurota=shurota;
    koord_dovgota=dovgota;
}
misce::misce(misce &obj)
{
    strcpy_s(obl_name,obj.obl_name);
    strcpy_s(country,obj.country);
    koord_shurota=obj.koord_shurota;
    koord_dovgota=obj.koord_dovgota;
}
misce::~misce(void)
{
    cout << "Деструктор: Мiсце" << endl;
}
void misce::getkoord(void)
{
    cout<<"Координати широти= "<<koord_shurota<<"°"<<endl;
    cout<<"Координати довготи= "<<koord_dovgota<<"°"<<endl;
}
void misce::setkoord(int shurota,int dovgota)
{
    koord_shurota=shurota;
    koord_dovgota=dovgota;
}
 
misto::misto(void)
{
    strcpy_s(city_name," ");
    naselennia=0;
}
misto::misto(char *n,long k)
{
    strcpy_s(city_name,n);
    naselennia=k;
}
misto::misto(misto &obj)
{
    strcpy_s(obl_name,obj.obl_name);
    strcpy_s(country,obj.country);
    strcpy_s(city_name,obj.city_name);
    naselennia=obj.naselennia;
}
misto::~misto(void)
{
    cout<<"Деструктор: "<<city_name<<endl;
}
void misto::city_set(char *name,long kilk)
{
    strcpy_s(city_name,name);
    naselennia=kilk;
}
void misto::city_show(void)
{
    cout<<"Назва мiста: "<<city_name<<endl;
    cout<<"Кiлькiсть жителiв: "<<naselennia<<endl;
}
 
megapolis::megapolis(void)
{
    strcpy_s(data_zasn," ");
}
megapolis::megapolis(char *data)
{
    strcpy_s(data_zasn,data);
}
megapolis::megapolis(megapolis &obj)
{
    strcpy_s(obl_name,obj.obl_name);
    strcpy_s(country,obj.country);
    strcpy_s(city_name,obj.city_name);
    naselennia=obj.naselennia;
    strcpy_s(data_zasn,obj.data_zasn);
}
megapolis::~megapolis(void)
{
    cout<<"Деструктор: Мегаполiс"<<endl;
}
void megapolis::setdata(char *data)
{
    strcpy_s(data_zasn,data);
}
void megapolis::getdata(void)
{
    cout<<"Дата заснування: "<<data_zasn<<endl;
}
 
void megapolis::show_all(void)
{
    cout<<"Країна: "<<country<<endl;
    cout<<"Назва областi: "<<obl_name<<endl;
    cout<<"Назва мiста: "<<city_name<<endl;
    cout<<"Кiлькiсть жителiв: "<<naselennia<<endl;
    cout<<"Дата заснування: "<<data_zasn<<endl;
};
 
 
void megapolis::to_file(char *fname)
{
    ofstream file(fname);
    if(!file)
    {
        cout << "Error!" << endl;
    }
    else
    {
        file<<country<<endl;
        file<<obl_name<<endl;
        file<<city_name<<endl;
        file<<naselennia<<endl;
        file<<data_zasn<<endl;
        file.close();
    }
}
void megapolis::from_file(char *fname)
{
    ifstream file(fname);
    if(!file)
    {
        cout << "Error!" << endl;
    }
    else
    {
        file.getline(country,20);
        file.getline(obl_name,20);
        file.get();
        file.getline(city_name,20);
        file>>naselennia;
        file.get();
        file.getline(data_zasn,20);
        file.close();
    }
}
programm.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
#include <iostream>
#include <cstring>
#include "oblast.h"
 
using namespace std;
 
void main()
 
{   setlocale(LC_ALL,"Ukrainian");
    
    
    misce obj2;
    obj2.setkoord(50,30);
    obj2.getkoord();
    megapolis obj;
    obj.obl_set("Київська","Україна");
 
    obj.city_set("Київ",2814258);
    obj.setdata("482 рiк");
    obj.show_all();
    obj.to_file("1.txt");
    obj.from_file("1.txt");
 
    cin.get();
}

вот .... есть некое наследование классов, мне нужно сделать массив объектов этого класса в основной программе. например есть объект misce obj2; и megapolis obj; как вместо объявления этих объектов сделать из них массив? искал, так только находил маленикие классы с конструктором, параметры которого передать в этом массиве объктов не составляет труда. А как сделать этот массив, если у классов много методов и конструкторов с параметрами и без...)
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.03.2012, 20:00
Ответы с готовыми решениями:

Построение описания класса, создание и уничтожение объектов этого класса
Построить описание класса, содержащего информацию о почтовом адресе организации. Предусмотреть...

Массив объектов одного класса как поле другого класса
Доброе время суток. Мне тут в универе задали лабу, нужно создать класс полем которого будет массив...

Реализовать подсчет количества объектов класса, используя статическую переменную-член класса
как реализовать подсчет количества объектов класса (используя статическую переменную-член класса),...

Массив объектов класса. Печать строк-членов класса.
подскажите, как распечатать строки? #include &quot;myString.h&quot; #include &lt;iostream&gt; #define stop...

7
1080 / 1006 / 106
Регистрация: 28.02.2010
Сообщений: 2,889
23.03.2012, 20:02 2
Создайте массив указателей на объекты класса.
Или используйте std::vector.
1
программист С++
841 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
23.03.2012, 20:04 3
объявлять массив указателей на базовый класс
C++
1
2
3
oblast** objs = new oblast[2];
objs[0] = new misce();
objs[1] = new megapolis();
1
0 / 0 / 0
Регистрация: 11.10.2011
Сообщений: 30
23.03.2012, 20:14  [ТС] 4
когда объекты были не в массиве, то через них было просто обращаться к методам классов:
C++
1
2
3
    obj.city_set("Київ",2814258);
    obj.setdata("482 рiк");
    obj.show_all();
а теперь как это сделать?)
0
программист С++
841 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
23.03.2012, 20:15 5
Notty, с помощью оператора ->
C++
1
objs[0]->city_set("Київ",2814258);
1
0 / 0 / 0
Регистрация: 11.10.2011
Сообщений: 30
24.03.2012, 22:13  [ТС] 6
делал все, как вы сказали, но вот что...

error C2440: 'initializing' : cannot convert from 'oblast *' to 'oblast **'
1> Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

мб я что-то делаю не так...(
0
599 / 567 / 104
Регистрация: 07.11.2010
Сообщений: 2,004
24.03.2012, 22:15 7
нужно сделать приведение типов через reinterpret_cast к указателю на базовый класс
1
0 / 0 / 0
Регистрация: 11.10.2011
Сообщений: 30
24.03.2012, 23:25  [ТС] 8
почитал об этих приведениях типов, что-то ничего не выходит, можете показать на моем примере плз)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.03.2012, 23:25
Помогаю со студенческими работами здесь

Массив объектов класса как член другого класса
Здравствуйте. У меня тут возникла проблемка #include &quot;main.h&quot; class player { public: ...

Инициализация объектов класса в конструкторе другого класса
У меня есть класс Subscriber,в котором есть несколько объектов другого класса Date,мне нужно,чтобы...

Доступ объектов класса
Нужно чтобы внутренние объекты класса были доступны функциям в файле с классом, но не доступны из...

Массив объектов класса
Добрый день. При попытки создать массив объектов класса ошибка. Как в дальнейшем динамически...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru