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

Реализация динамического создания экземпляров класса. - C++

Восстановить пароль Регистрация
 
hoot
 Аватар для hoot
100 / 21 / 3
Регистрация: 10.11.2010
Сообщений: 193
27.09.2011, 00:25     Реализация динамического создания экземпляров класса. #1
Добрый вечер.

Есть программа:
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
//HEADER.h
#include <iostream>
#include <conio.h>
#include <string>
 
using namespace std;
 
class TRAIN
{
private:
    int num_tr;
    float time_tr;
    string city_tr;
 
 
public:
    void SetNum(int num) {num_tr=num;}//Принимает номер поезда.
    int GetNum()const{return num_tr;} //Возвращает номер поезда.
 
    void SetTime(float time) {time_tr=time;}//Принимает время отправления.
    float GetTime()const{return time_tr;} //Возвращает время отправления.
 
    void SetCity(string city) {city_tr=city;}//Принимает пункт назначения.
    string GetCity() const {return city_tr;}//Возвращает пункт назначения.
 
 
};
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
//code.cpp
#include "h_train.h"
 
 
int main()
{
setlocale (LC_ALL,"russian");
 
 
TRAIN N1;
 
int a;
float b;
string c;
 
 
cout<<"Введите номер поезда: ";
cin>>a;
cout<<"Введите время прибытия (чч.мм): ";
cin>>b;
cout<<"Укажите пункт назначения: ";
cin>>c;
 
 
N1.SetNum(a);
N1.SetTime(b);
N1.SetCity(c);
 
 
cout<<"Номер поезда:"<<N1.GetNum()<<endl;
cout<<"Время прибытия:"<<N1.GetTime()<<endl;
cout<<"Время прибытия:"<<N1.GetCity()<<endl;
 
_getch();
return 0;
}
Как можно реализовать динамическое создание экземпляров класса? Возможно ли это вообще.
Большая просьба дать информацию как можно подробней.
Заранее всем спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
27.09.2011, 00:57     Реализация динамического создания экземпляров класса. #2
C++
1
TRAIN *trainPtr = new TRAIN;
Это ?
hoot
 Аватар для hoot
100 / 21 / 3
Регистрация: 10.11.2010
Сообщений: 193
27.09.2011, 01:05  [ТС]     Реализация динамического создания экземпляров класса. #3
Я правильно понимаю, это ты создал указатель на класс.

Я говорил о том, что, к примеру, спрашивается у пользователя сколько вы хотите задать поездов( с этим проблем нет). Он указывает, пусть будет 3. и программа автоматом создает 3 экземпляра класса. С именами, пусть будет N1, N2, N3.
Так вот не могу понять как реализовать это создание экземпляров класса.
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
27.09.2011, 01:16     Реализация динамического создания экземпляров класса. #4
Цитата Сообщение от hoot Посмотреть сообщение
Я правильно понимаю, это ты создал указатель на класс.
Нет, не правильно. Я выделил память для одного экземпляра и адрес, которая вернула операция new, поместил в указатель trainPtr, чтобы можно было работать с этим экземпляром.

Цитата Сообщение от hoot Посмотреть сообщение
Я говорил о том, что, к примеру, спрашивается у пользователя сколько вы хотите задать поездов( с этим проблем нет). Он указывает, пусть будет 3. и программа автоматом создает 3 экземпляра класса. С именами, пусть будет N1, N2, N3.
Так вот не могу понять как реализовать это создание экземпляров класса.
C++
1
2
3
4
int n;
cout << "Введите кол-во поездов ";
cin >> n;
TRAIN *trainPtr = new TRAIN[n];
В этом случае выделяется память для массива из n элементов и адрес на этот массив присваивается указателю trainPtr.

Только не забудьте в конце программы освобождать выделенную память. Для одного экземпляра - это
C++
1
delete trainPtr;
Для массива экземпляров - это
C++
1
delete [] trainPtr;
Добавлено через 1 минуту
Надеюсь как обращаться с указателями вы знаете.
hoot
 Аватар для hoot
100 / 21 / 3
Регистрация: 10.11.2010
Сообщений: 193
27.09.2011, 11:03  [ТС]     Реализация динамического создания экземпляров класса. #5
Спасибо!
Знаю.
Yandex
Объявления
27.09.2011, 11:03     Реализация динамического создания экземпляров класса.
Ответ Создать тему
Опции темы

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