С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
hastal
1 / 1 / 1
Регистрация: 16.01.2016
Сообщений: 97
1

Как создать копию объекта на который указывает указатель

28.03.2016, 14:15. Просмотров 916. Ответов 3
Метки нет (Все метки)

У меня есть указатель класс Student, который хранит информацию о студентах(имя, фамилию, телефон) в строках в стиле Си, то есть private члены - указатели на char, в классе реализовано выделение/удаление памяти и т.д. Есть ещё один класс AcademicGroup, который хранит количество студентов и указатель на указатель на Student(одномерный массив указателей). В классе AcademicGroup есть метод добавления студентов и вот в чем вопрос, если у меня уже есть группа из 5 студентов и мне надо добавить ещё 7, то для начала мне надо создать новую группу из 12 людей и добавить туда старых 5 человек, а потом новых 7 человек и затем удалить указатель на старую группу, чтоб не было утечки памяти. Как мне это реализовать, мой вариант ведь работает не верно так?
C++
1
2
3
4
5
6
Student **temp = new Student*[count + q];
        for (int i = 0;i < count;i++)
        {
            temp[i] = new Student;
            temp[i] = pSt[i];
        }
pSt - мой старый указатель на группу.
count - старое количество человек.
q - количество добавляемых.
temp - новое хранилище.

Мне надо скопировать все в темп, затем присвоить указателю pSt новое содержимое temp и удалить старый pSt. Как это реализовать без утечки памяти.
Эта строка:
C++
1
temp[i] = pSt[i];
ведь попросту копирует адреса, как мне сделать все это не перегружая оператор= и прочее для класса Student(на этот момент мы не учили это).
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.03.2016, 14:15
Ответы с готовыми решениями:

Как изменить тип объекта, на который указывает указатель?
Есть абстрактный базовый класс и два производных: class Base { protected: int A; }; class...

Как создать копию объекта, зная его указатель?
Здравствуйте, существует следующая проблема. В своей программе я рисую график используя класс...

как создать копию объекта, на который ссылается итератор?
Есть шаблонная фукнция, в которую передается итератор с произвольным доступом (IT). Необходимо...

Создать копию объекта производного класса зная указатель на базовый
Добрый день! Вопрос в следующем... Возможно ли создать копию объекта производного класса зная...

Как вывести адресс на который указывает указатель типа char*.
Эта программа : #include &lt;iostream&gt; using namespace std; int main() { int a={1, 2, 3, 4};...

3
zss
Модератор
Эксперт С++
7506 / 6864 / 4335
Регистрация: 18.12.2011
Сообщений: 18,174
Завершенные тесты: 1
28.03.2016, 14:25 2
Перегрузите operator= в классе Student, а заодно проверьте наличие копикоструктора и деструктора
0
hastal
1 / 1 / 1
Регистрация: 16.01.2016
Сообщений: 97
28.03.2016, 14:34  [ТС] 3
Цитата Сообщение от zss Посмотреть сообщение
Перегрузите operator= в классе Student, а заодно проверьте наличие копикоструктора и деструктора
Иначе никак?
0
Nosey
1376 / 403 / 144
Регистрация: 22.10.2014
Сообщений: 872
Завершенные тесты: 2
28.03.2016, 14:38 4
Лучший ответ Сообщение было отмечено rikimaru2013 как решение

Решение

Цитата Сообщение от hastal Посмотреть сообщение
Иначе никак?
Вот так даже лучше будет : https://ru.wikipedia.org/wiki/%D0%9F...D0%B8%D1%8F%29
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.03.2016, 14:38

Узнать номер элемента массива на который указывает указатель
Может вопрос глупый но тока что об этом задумался! Можно ли узнать номер элемента массива на...

Создать указатель, который сможет указывать объект любого типа.
Привет всем, я в програмировании ни чего не смыслю поэтому обращаюсь к вам, помогите составить...

Создать массив или вектор того типа, на который ссылается указатель
Доброго времени суток. Есть следующая функция template &lt;typename...


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

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

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