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

Создать vector из объектов класса - C++

Восстановить пароль Регистрация
 
Asker
114 / 102 / 11
Регистрация: 18.12.2010
Сообщений: 378
01.05.2014, 20:50     Создать vector из объектов класса #1
Добрый вечер!

У меня есть некий класс SuperClass, в котором есть динамическое поле:
C++
1
2
3
4
5
6
7
8
class SuperClass
{
public:
    int *v;
 
    SuperClass(int x){v = new int; *v = x;}
    ...
}
Еще у меня есть массив int M[N], и мне нужно создать вектор из N объектов класса SuperClass:
C++
1
vector <SuperClass> arr;
так, чтобы значение *v в i-м элементе вектора было равно соответственно M[i].
Как я это пытаюсь делать:
C++
1
2
3
4
5
for (int i = 0; i < N; ++i)
{
    SuperClass temp(M[i]);
    arr.push_back(temp);
}
, но в итоге я получаю вектор из совершенно одинаковых элементов Я понимаю, что это происходит из-за того, что неправильно копируется указатель, но я не знаю, как это не криво исправить. Помогите, пожалуйста
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Avazart
 Аватар для Avazart
6897 / 5137 / 252
Регистрация: 10.12.2010
Сообщений: 22,570
Записей в блоге: 17
01.05.2014, 21:18     Создать vector из объектов класса #2
C++
1
2
3
4
5
6
7
8
class SuperClass
{
public:
    int *v;
 
    SuperClass(int x){v = new int; *v = x;}  // Че курил когда писал эту стройку ?
    ...
}
Что это за уродство ?
Чего ты ту вообще хотел сделать ?
Asker
114 / 102 / 11
Регистрация: 18.12.2010
Сообщений: 378
01.05.2014, 21:20  [ТС]     Создать vector из объектов класса #3
Цитата Сообщение от Avazart Посмотреть сообщение
Что это за уродство ?
Чего ты ту вообще хотел сделать ?
А что не так? Я просто переформулировал свою задачу более просто. Конечно же я не буду писать int *v
Avazart
 Аватар для Avazart
6897 / 5137 / 252
Регистрация: 10.12.2010
Сообщений: 22,570
Записей в блоге: 17
01.05.2014, 21:36     Создать vector из объектов класса #4
нафига выделять память под один int динамически?
Asker
114 / 102 / 11
Регистрация: 18.12.2010
Сообщений: 378
01.05.2014, 21:40  [ТС]     Создать vector из объектов класса #5
Цитата Сообщение от Asker Посмотреть сообщение
Я просто переформулировал свою задачу более просто
Если так будет угодно, вместо int на самом деле гигантская структура. Мне надо понять, что с указателем делать
Avazart
 Аватар для Avazart
6897 / 5137 / 252
Регистрация: 10.12.2010
Сообщений: 22,570
Записей в блоге: 17
01.05.2014, 21:48     Создать vector из объектов класса #6
Ну так и пиши ...
Ты хочешь что бы тебе адекватно ответили на неадекватный пример ?

Ответ на твой вопрос:
C++
1
// Тут ответ, додумай его  сам.
Добавлено через 5 минут
Цитата Сообщение от Asker Посмотреть сообщение
Мне надо понять, что с указателем делать
Копирующий конструктор определить, как минимум.
Asker
114 / 102 / 11
Регистрация: 18.12.2010
Сообщений: 378
01.05.2014, 22:07  [ТС]     Создать vector из объектов класса #7
Цитата Сообщение от Avazart Посмотреть сообщение
Ответ на твой вопрос:
C++
1
// Тут ответ, додумай его  сам.


Цитата Сообщение от Avazart Посмотреть сообщение
Копирующий конструктор
Тем не менее, это сработало, спасибо
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.05.2014, 22:13     Создать vector из объектов класса
Еще ссылки по теме:

C++ Возможно ли создать массив объектов класса?
Построение описания класса, создание и уничтожение объектов этого класса C++
Как корректно скопировать vector в vector внутри класса C++

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

Или воспользуйтесь поиском по форуму:
Avazart
 Аватар для Avazart
6897 / 5137 / 252
Регистрация: 10.12.2010
Сообщений: 22,570
Записей в блоге: 17
01.05.2014, 22:13     Создать vector из объектов класса #8
Вообще если работаешь с контейнерами, то стоит подумать о конструкторе по умолчанию, копирующем конструкторе, и операторе присвоения. А для словарей и множеств еще и операторы сравнения.
Yandex
Объявления
01.05.2014, 22:13     Создать vector из объектов класса
Ответ Создать тему
Опции темы

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