Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 03.12.2017
Сообщений: 1
1

Реализовать базовый класс , объекты которого могут создавать свои копии, и класс-наследник для базового класса

03.12.2017, 20:07. Показов 621. Ответов 0
Метки c, copy (Все метки)

Author24 — интернет-сервис помощи студентам
В обучающей системе есть задание, которое сама же система и проверяет.
По заданию необходимо реализовать базовый класс (структуру), определяющий интерфейс объекта, который может создавать свои копии - Cloneable. Класс Cloneable должен содержать метод clone(), возвращающий указатель на копию объекта, у которого он был вызван. Память под копию должна выделяться динамически, а ответственность за освобождение выделенной память несет код, вызвавший метод clone. При этом для аллокации памяти запрещено пользоваться функциями из cstdlib.
Кроме того нужно создать наследник класса Cloneable - Clon. Класс Clon должен иметь конструктор без параметров и уметь копировать себя.
Предусмотрите при создании класса Clonеable и его наследника, что иерархию классов можно было расширять и дальше, наследуясь при этом от существующих классов.

У меня получился следующий код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
struct Cloneable
{
    virtual Cloneable * clone(void) const = 0;
};
 
 
struct Clon : Cloneable
{
    Clon() 
    {
             //тут пока пусто 
    }
    Cloneable* clone() const 
    {
        return new Clon(*this);
    }
};
Проверку кода осуществляет система, то есть нам не нужно вводить или выводить что-либо, а также реализовывать main() тоже не нужно. При попытке запуска кода в системе выдается следующая ошибка:

Failed. Runtime error:
terminate called after throwing an instance of 'std::logic_error'
what(): Memory leaks
Aborted (core dumped)

При этом подробностей (как используется код, какие объекты создаются и как вызываются методы копирования) нет. Речь, я так понимаю, идет об утечке памяти. Однако я, к сожалению, не могу понять, как нужно изменить код, чтобы он заработал. Есть ли у вас идеи или указания для этой задачи?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.12.2017, 20:07
Ответы с готовыми решениями:

Реализовать базовый класс Человек и класс-наследник Студент
Создать базовый класс Человек. Каждый объект этого класса должен содержать ФИО, год рождения и пол....

Класс-наследник на основе базового класса
-----

Реализовать базовый класс "Футбольная команда" и класс-наследник с методами консольного ввода/вывода
Составить программу на языке С++, в которой описывается класс (с добавлением наследуемого...

Абстрактный класс CGraphicsObject, его наследник - базовый класс CPoint, и класс - наследник от CPoint
Всем доброй ночи! Очень нужна помощь и по мере возможности разъяснения на темы: абстрактный класс в...

0
03.12.2017, 20:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.12.2017, 20:07
Помогаю со студенческими работами здесь

Не передаются даные поля базового класса в класс наследник
мне нужно передать поле amount базового класса в наследник, и вывести основной чек на экран. Из-за...

Создать базовый класс прямоугольник и класс-наследник квадрат
Создать базовый класс прямоугольник со свойствами ширина, длина, конструктором с параметрами и...

Как в IntelliJ IDEA посмотреть методы которые могут быть перегружены из супер класса в класс наследник
public class CloseAction extends WindowAdapter { } Как мне посмотреть какие есть методы у...

Создать класс наследник от класса TForm1. Определить конструктор без параметров для дочернего класса
Доброго всем времени суток. Помогите решить проблемку. Хочу создать класс наследник от класса...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru