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

Создание объектов в цикле! - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 30, средняя оценка - 4.93
Nikitac++
1 / 1 / 0
Регистрация: 15.10.2011
Сообщений: 34
17.10.2011, 20:13     Создание объектов в цикле! #1
Подскажите пожалуйста как в цикле создать несколько одинаковых объектов, но с разными именами, либо как-нибудь, чтобы можно было их пометить и в дальнейшем использовать в программе по отдельности, как минимум обрабатывать в цикле. Заранее благодарен.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2011, 20:13     Создание объектов в цикле!
Посмотрите здесь:

C++ Создание файлов в цикле? (с++)
Создание объектов C++
C++ Создание и удаление объектов
C++ Создание объектов в цикле по заданному числу
Создание переменных в цикле C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
17.10.2011, 20:15     Создание объектов в цикле! #2
Nikitac++, никак. Для этого существуют массивы.
Nikitac++
1 / 1 / 0
Регистрация: 15.10.2011
Сообщений: 34
17.10.2011, 20:20  [ТС]     Создание объектов в цикле! #3
Подскажи пожалуйста тогда решение моей проблемы существующим способом. Нужно создать 10 объектов, объект - картинка ( её координаты, куда её нарисовать и тд ). Алгоритмом создаю 10 таких картинок и в дальнейшем нужна возможность использовать их в мне нужном порядке, а именно по номерам.
Типо:
C++
1
2
3
kart1.x=44;
kart4.y=99;
// И ТД
anton_m
2 / 2 / 0
Регистрация: 22.09.2011
Сообщений: 7
17.10.2011, 20:27     Создание объектов в цикле! #4
Можно создать массив из 10 указателей на объекты. В цикле уже создавать сами объекты и записывать в массив указатели на них в нужном тебе порядке
Сыроежка
Заблокирован
17.10.2011, 20:28     Создание объектов в цикле! #5
Цитата Сообщение от Nikitac++ Посмотреть сообщение
Подскажи пожалуйста тогда решение моей проблемы существующим способом. Нужно создать 10 объектов, объект - картинка ( её координаты, куда её нарисовать и тд ). Алгоритмом создаю 10 таких картинок и в дальнейшем нужна возможность использовать их в мне нужном порядке, а именно по номерам.
Типо:
C++
1
2
3
kart1.x=44;
kart4.y=99;
// И ТД
Ну, так используете индекс массива: kart[1].x = 44; kar[4].y = 99;
Nikitac++
1 / 1 / 0
Регистрация: 15.10.2011
Сообщений: 34
17.10.2011, 20:31  [ТС]     Создание объектов в цикле! #6
Цитата Сообщение от Сыроежка Посмотреть сообщение
Ну, так используете индекс массива: kart[1].x = 44; kar[4].y = 99;
Ну пожалуйста напиши как это сделать подробно от создания массива до его наполнения, c++ для меня новый язык, не могу логику даже включить пока, нужно показать.
anton_m
2 / 2 / 0
Регистрация: 22.09.2011
Сообщений: 7
17.10.2011, 20:42     Создание объектов в цикле! #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Picture
{
public:
    int x;
    int y;
};
 
void main(){
    Picture **kart = new Picture*[10];
 
    for(int i = 0;i<10;i++)
    {
        Picture* picture = new Picture;
        //заполняем поля объекта
        picture->x = 5;
        picture->y = 10;
        kart[i] = picture;
    }
}
Nikitac++
1 / 1 / 0
Регистрация: 15.10.2011
Сообщений: 34
17.10.2011, 20:43  [ТС]     Создание объектов в цикле! #8
вот что получилось, работает, правильно ли это? не порнуха?
П.С. компилятор выдаёт ошибку "plita plita1;" мол плита1 неинициализированая переменная , не страшно ли это?
C++
1
2
3
4
5
6
7
8
9
plita mas[9];
int i;
for(i=0; i<9; i++)
{
plita plita1;
mas[i] =  plita1 ;
}
 
mas[1].SetX(5);
Сыроежка
Заблокирован
17.10.2011, 20:44     Создание объектов в цикле! #9
Цитата Сообщение от Nikitac++ Посмотреть сообщение
Ну пожалуйста напиши как это сделать подробно от создания массива до его наполнения, c++ для меня новый язык, не могу логику даже включить пока, нужно показать.
Допустим, ваш класс называется Kart. Объявляется массив из 10 (или любого другого числа элементов)

C++
1
Kart kart[10];
Для этого у вас в классе должен быть конструктор по умолчанию. Так как массив - это агрегатное данное, то в принципе вы сразу же можете инициализировать его элементы при объявлении. Например, у вас в классе конутсруктор с двумя параметрами (как у вас в тексте встретились переменные x и y.). Тогда вы можете объявить свой массив как

C++
1
Kart kart[10] = { Kart( 44, 99 ),  Kart( 22, 65 ), /*...*/} ,;
А далее делайте со совим масивом, что хотите, в зависимости от налиция в нем методов и поставленных задач.
Nikitac++
1 / 1 / 0
Регистрация: 15.10.2011
Сообщений: 34
17.10.2011, 20:45  [ТС]     Создание объектов в цикле! #10
anton_m, в чем разница того что написал я и ты? что правильней ?
Сыроежка
Заблокирован
17.10.2011, 20:49     Создание объектов в цикле! #11
Цитата Сообщение от Nikitac++ Посмотреть сообщение
anton_m, в чем разница того что написал я и ты? что правильней ?
Тут вопрос стоит так, нужно ли выделять массив в памяти, или достаточно объявить локальный массив?

Кроме того в вашем коде напрашивается конструктор с двумя параметрами для инициализации членов класса x и y во время создания объекта.
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
17.10.2011, 20:57     Создание объектов в цикле! #12
а кто знает это нормально что
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class Image{
public:
      int x,y;
       Image(){};             
      };
 
int main()
{
 Image *a=new Image[10];
 a[1].x=5;
 
 return 0;       
}
доступ к к объекту a осуществляется через . а не через ->
Nikitac++
1 / 1 / 0
Регистрация: 15.10.2011
Сообщений: 34
17.10.2011, 20:58  [ТС]     Создание объектов в цикле! #13
Цитата Сообщение от Сыроежка Посмотреть сообщение
Тут вопрос стоит так, нужно ли выделять массив в памяти, или достаточно объявить локальный массив?

Кроме того в вашем коде напрашивается конструктор с двумя параметрами для инициализации членов класса x и y во время создания объекта.
А как лучше?) Я не знаю...........( так вроде работает все с какой целью надо выделять память? чтоб оптимизировать и меньше тормозило? я просто не понимаю этого до конца
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.10.2011, 21:02     Создание объектов в цикле!
Еще ссылки по теме:

Создание нескольких массивов в цикле C++
C++ Создание переменных в цикле
C++ Создание объектов пользователем

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

Или воспользуйтесь поиском по форуму:
Сыроежка
Заблокирован
17.10.2011, 21:02     Создание объектов в цикле! #14
Цитата Сообщение от Van111 Посмотреть сообщение
а кто знает это нормально что
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class Image{
public:
      int x,y;
       Image(){};             
      };
 
int main()
{
 Image *a=new Image[10];
 a[1].x=5;
 
 return 0;       
}
доступ к к объекту a осуществляется через . а не через ->
Нормально! Вы можете индексировать указатель точно также, как и массив. Либо выполнять арифметику указателей и использовать оператор ->.

Добавлено через 1 минуту
Цитата Сообщение от Nikitac++ Посмотреть сообщение
А как лучше?) Я не знаю...........( так вроде работает все с какой целью надо выделять память? чтоб оптимизировать и меньше тормозило? я просто не понимаю этого до конца
В вашем случае, когда размер массива заранее известен, и он вам один нужен на протяжении выполнения программы, то лучше объявить его как локальный массив без динамического выделения памяти.
Yandex
Объявления
17.10.2011, 21:02     Создание объектов в цикле!
Ответ Создать тему
Опции темы

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