С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Notty
0 / 0 / 0
Регистрация: 11.10.2011
Сообщений: 30
#1

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

23.03.2012, 20:00. Просмотров 378. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.03.2012, 20:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос массвив объектов класса (C++):

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

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

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

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

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

Инициализация объектов класса - C++
Доброго всем времени суток! У Бьерн Страуструп увидел вот такую конструкцию class date { int month, day, year; ...

7
Евгений М.
1036 / 977 / 54
Регистрация: 28.02.2010
Сообщений: 2,829
Завершенные тесты: 2
23.03.2012, 20:02 #2
Создайте массив указателей на объекты класса.
Или используйте std::vector.
1
sandye51
программист С++
685 / 587 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
23.03.2012, 20:04 #3
объявлять массив указателей на базовый класс
C++
1
2
3
oblast** objs = new oblast[2];
objs[0] = new misce();
objs[1] = new megapolis();
1
Notty
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
sandye51
программист С++
685 / 587 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
23.03.2012, 20:15 #5
Notty, с помощью оператора ->
C++
1
objs[0]->city_set("Київ",2814258);
1
Notty
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
panicwassano
592 / 560 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
24.03.2012, 22:15 #7
нужно сделать приведение типов через reinterpret_cast к указателю на базовый класс
1
Notty
0 / 0 / 0
Регистрация: 11.10.2011
Сообщений: 30
24.03.2012, 23:25  [ТС] #8
почитал об этих приведениях типов, что-то ничего не выходит, можете показать на моем примере плз)
0
24.03.2012, 23:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.03.2012, 23:25
Привет! Вот еще темы с ответами:

Взаимодействие объектов 1-го класса - C++
Помогите! Нужна программа следующей функции: есть объект Fighter там есть переменная хп и урон нужно что-бы я создавал 2 объекта и у...

Вектор из объектов класса - C++
Добрый вечер) Подскажите пж, что не так? Вот код программы: В файле class.h: #ifndef CLASS_H_INCLUDED #define...

Инициализация объектов класса - C++
Помогите, пожалуйста написать, с этим у меня тяжко хоть это и азы... Создайте 3 экземпляра класса и инициализируйте с помощью: а)...

Список из объектов класса - C++
Здравствуйте, возник вопрос- Как правильно сделать двунаправленный список( не циклический) из объектов класса. Как реализовать функции для...


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

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

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