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

Копирующий конструктор абстрактного класа - C++

Восстановить пароль Регистрация
 
xajker
0 / 0 / 0
Регистрация: 05.11.2012
Сообщений: 12
12.12.2013, 21:45     Копирующий конструктор абстрактного класа #1
Добрый вечер. Сразу к делу.
Есть абстрактный класс:

C++
1
2
3
4
5
6
7
8
9
10
11
12
class Product abstract
{
protected:
    int lipids;
    string brand;
 
public:
    Product();
    Product(int _lipids, string _brand);
    virtual void show() abstract;
    virtual void input() abstract;
};
есть производный класс:

C++
1
2
3
4
5
6
7
8
9
10
11
class Milk: public Product
{
protected:
    int capacity;
 
public:
    Milk();
    int getLipids();
    virtual void show() override;
    virtual void input() override;
};
есть третий "вспомогательный" класс, который своим полем имеет контейнер Queue<Product> queue (очередь тоже сам писал).
У этого класса есть метод:

C++
1
2
3
4
5
6
7
void Presenter::createMilk()
{
    Milk *milk = new Milk();
    milk->input(); //заполняет поля класа
    Product *pr = dynamic_cast<Product*>(milk);
    queue.push(*pr); // ERROR!!!
}
И вот в обозначенной строчке ошибка
"no suitable user-defined conversion from <Product> to <Product> exist"

Слышал что нужно конструктор копирования сделать для абстрактного класса, но не совсем понимаю зачем. Помогите разобраться и подскажете как правильно реализовать это.
Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.12.2013, 21:45     Копирующий конструктор абстрактного класа
Посмотрите здесь:

C++ копирующий конструктор !!!
копирующий конструктор и иерархия C++
Копирующий конструктор C++
Копирующий конструктор класса, содержащего переменную-член указатель C++
C++ Копирующий конструктор
закрытый копирующий конструктор C++
Копирующий конструктор C++
C++ Когда в классе нужен копирующий конструктор?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
13.12.2013, 09:54     Копирующий конструктор абстрактного класа #2
xajker, Очередь хранит экземпляры абстрактного класса? Ват?
xajker
0 / 0 / 0
Регистрация: 05.11.2012
Сообщений: 12
13.12.2013, 17:05  [ТС]     Копирующий конструктор абстрактного класа #3
Очередь на шаблонах. Должна хранить объекты-потомки класса Product.
Queue<Product> queue как бы выглядит странно, но я думал тут все решается по этому поводу через приведение таким образом
C++
1
2
3
Milk *milk = new Milk();
    milk->input(); //заполняет поля класса
    Product *pr = dynamic_cast<Product*>(milk);
или нет? преподаватель ничего по этому поводу не сказал.
Помогите сделать правильно и главное разобраться.
Yandex
Объявления
13.12.2013, 17:05     Копирующий конструктор абстрактного класа
Ответ Создать тему
Опции темы

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