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

Создание массива классов(обектов класса) - C++

Восстановить пароль Регистрация
 
Демик
9 / 9 / 0
Регистрация: 19.04.2012
Сообщений: 114
23.06.2013, 23:52     Создание массива классов(обектов класса) #1
Здрасти, для этого я использую vector
C++
1
std::vector<Sprite> sprites;
После чего пытаюсь добавить объект в этот вектор
C++
1
2
Sprite sp = Sprite(x, y,width,height,texID);
sprites.push_back(sp);
Но у меня ничего не получается, как быть и что делать? Помогите пожалуйста.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
24.06.2013, 00:44     Создание массива классов(обектов класса) #2
В каком смысле не получается?
Можно, кстати, делать так:
C++
1
sprites.push_back(Sprite(x, y,width,height,texID));
Демик
9 / 9 / 0
Регистрация: 19.04.2012
Сообщений: 114
24.06.2013, 01:16  [ТС]     Создание массива классов(обектов класса) #3
@Olivеr, Я в конце концов разобрался, нужно делать так:
C++
1
2
Sprite sp = Sprite(x, y,width,height,texID);
    sprites.push_back(sp);
Но все равно, спасибо, ваш метод гораздо удобнее +)
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
24.06.2013, 01:19     Создание массива классов(обектов класса) #4
@Демик, в вашем случае в вектор поместится копия sp, то есть будет существовать два таких экземпляра.
Демик
9 / 9 / 0
Регистрация: 19.04.2012
Сообщений: 114
24.06.2013, 01:22  [ТС]     Создание массива классов(обектов класса) #5
@Olivеr, так и думал, что мой способ неверен, сразу как написал была мысль, где же мне это аукнеться = )
а если бы я написал что-то типа
C++
1
2
3
Sprite sp = Sprite(x, y,width,height,texID);
    sprites.push_back(sp);
delete sp;
?
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
24.06.2013, 01:31     Создание массива классов(обектов класса) #6
@Демик, operator delete можно применять только к указателям, которые указывают на данные размещенные в динамически распределяемой памяти (куче).
Такой код совершенно некорректен.

Лучше скажите, чего конкретно надо добиться, а я подскажу как это сделать.

Добавлено через 1 минуту
Цитата Сообщение от Демик Посмотреть сообщение
так и думал, что мой способ неверен
а вообще, там ошибки нету, я просто говорю, что в векторе будет копия, а не конкретно тот же объект
Демик
9 / 9 / 0
Регистрация: 19.04.2012
Сообщений: 114
24.06.2013, 01:36  [ТС]     Создание массива классов(обектов класса) #7
@Olivеr, я в принципе что хотел уже получил.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,399
24.06.2013, 03:26     Создание массива классов(обектов класса) #8
Можно, кстати, делать так:
C++
1
sprites.emplace_back(x, y,width,height,texID);
Добавлено через 13 секунд
P.S. C++11
Демик
9 / 9 / 0
Регистрация: 19.04.2012
Сообщений: 114
24.06.2013, 03:46  [ТС]     Создание массива классов(обектов класса) #9
@MrGluck, какой метод будет более быстрым?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.06.2013, 03:50     Создание массива классов(обектов класса)
Еще ссылки по теме:

C++ Создание массива объектов класса
C++ Создание массива класса
SFML Создание массива экземпляров класса C++

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

Или воспользуйтесь поиском по форуму:
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,399
24.06.2013, 03:50     Создание массива классов(обектов класса) #10
@Демик, что значит быстрым? Мне вот быстрее набрать с emplace. А по своей сути они идентичны, просто второй использует initializer_list
Yandex
Объявления
24.06.2013, 03:50     Создание массива классов(обектов класса)
Ответ Создать тему
Опции темы

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