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

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

Войти
Регистрация
Восстановить пароль
 
Asker
116 / 104 / 11
Регистрация: 18.12.2010
Сообщений: 378
#1

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

01.05.2014, 20:50. Просмотров 490. Ответов 7
Метки нет (Все метки)

Добрый вечер!

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

Как создать vector внутри класса? - C++
#include &lt;vector&gt; using namespace std; // typedef std::vector&lt;int&gt; mantissa; class desyatichnaya_drob { public: int...

Создать производный класс ТРОИЧНЫЙ ВЕКТОР от класса Vector - C++
Народ!!! Please help me! Задолбался уже!:wall: Вобщем такое задание: Создать производный класс ТРОИЧНЫЙ ВЕКТОР от класса Vector....

Как корректно скопировать vector в vector внутри класса - C++
Есть класс принимающий в конструкторе vector: class test { test(std::vector&lt;std::string&gt; codeList); ~test(); ...

Создать шаблонную очередь и инстанцировать её для своего класса, представляющего строку на базе vector<char> - C++
Была задача создать шаблонную очередь (я это сделал) и инстанцировать её для своего класса, представляющего строку, изготовленную из...

Возможно ли создать массив объектов класса? - C++
Здравствуйте, уважаемые специалисты! Делаю приложение по распределению грузов на корабле. Разработала клаcсы Корабль, Палуба и Груз. ...

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

7
Avazart
Эксперт С++
7235 / 5431 / 303
Регистрация: 10.12.2010
Сообщений: 24,135
Записей в блоге: 17
01.05.2014, 21:18 #2
C++
1
2
3
4
5
6
7
8
class SuperClass
{
public:
    int *v;
 
    SuperClass(int x){v = new int; *v = x;}  // Че курил когда писал эту стройку ?
    ...
}
Что это за уродство ?
Чего ты ту вообще хотел сделать ?
0
Asker
116 / 104 / 11
Регистрация: 18.12.2010
Сообщений: 378
01.05.2014, 21:20  [ТС] #3
Цитата Сообщение от Avazart Посмотреть сообщение
Что это за уродство ?
Чего ты ту вообще хотел сделать ?
А что не так? Я просто переформулировал свою задачу более просто. Конечно же я не буду писать int *v
0
Avazart
Эксперт С++
7235 / 5431 / 303
Регистрация: 10.12.2010
Сообщений: 24,135
Записей в блоге: 17
01.05.2014, 21:36 #4
нафига выделять память под один int динамически?
0
Asker
116 / 104 / 11
Регистрация: 18.12.2010
Сообщений: 378
01.05.2014, 21:40  [ТС] #5
Цитата Сообщение от Asker Посмотреть сообщение
Я просто переформулировал свою задачу более просто
Если так будет угодно, вместо int на самом деле гигантская структура. Мне надо понять, что с указателем делать
0
Avazart
Эксперт С++
7235 / 5431 / 303
Регистрация: 10.12.2010
Сообщений: 24,135
Записей в блоге: 17
01.05.2014, 21:48 #6
Ну так и пиши ...
Ты хочешь что бы тебе адекватно ответили на неадекватный пример ?

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


Цитата Сообщение от Avazart Посмотреть сообщение
Копирующий конструктор
Тем не менее, это сработало, спасибо
0
Avazart
Эксперт С++
7235 / 5431 / 303
Регистрация: 10.12.2010
Сообщений: 24,135
Записей в блоге: 17
01.05.2014, 22:13 #8
Вообще если работаешь с контейнерами, то стоит подумать о конструкторе по умолчанию, копирующем конструкторе, и операторе присвоения. А для словарей и множеств еще и операторы сравнения.
1
01.05.2014, 22:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.05.2014, 22:13
Привет! Вот еще темы с ответами:

vector объектов структуры - C++
Здравствуйте господа програмисты,возникла у меня трудность,в програмке будет присутствовать неизвестное заранее количество координат...

Как создать массив объектов одного класса в другом, и как к ним обращаться? - C++
вот класс: #include &lt;iostream&gt; #include &lt;string.h&gt; using namespace std; class File { private: char *name, *date; int ...

На основе исходного std::vector<std::string> содержащего числа, создать std::vector<int> с этими же числами - C++
подскажите есть вот такая задача. Есть список . Создать второй список, в котором будут все эти же числа, но не в виде строк, а в виде...

Массив объектов пользовательского типа в vector - C++
Доброго времени суток. Кто может подсказать что храниться в vector&lt; Employer* &gt; employerArray ( 4 ); при его инициализации?


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

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

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