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

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

Войти
Регистрация
Восстановить пароль
 
xajker
0 / 0 / 0
Регистрация: 05.11.2012
Сообщений: 12
#1

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

12.12.2013, 21:45. Просмотров 319. Ответов 2
Метки нет (Все метки)

Добрый вечер. Сразу к делу.
Есть абстрактный класс:

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++
Добрый вечер всем! Следущая проблема - решила создать свой персональный vector - int_array. Но возникла проблема... Не пойму, как...

Копирующий конструктор - C++
Здравствуйте, кто нибудь может сказать, почему при создании копирующего конструктора нужно указывать ссылку на объект? #include...

Копирующий конструктор - C++
#include&lt;iostream&gt; #include&lt;fstream&gt; #include&lt;sstream&gt; #include&lt;cmath&gt; #include&lt;cstdlib&gt; #include&lt;string&gt; #include&lt;limits&gt; ...

копирующий конструктор !!! - C++
Вот это верный вид конструктора копирования??? class VK{ int b; public: VK(const VC &amp;); } VL::VK(const VK &amp; tmp){ b=tmp.b; ...

Копирующий конструктор - C++
Помогите пожалуйста реализовать копирующий конструктор, у меня он выдает нули =\ Вот код: #include &lt;iostream&gt; #include...

Закрытый копирующий конструктор - C++
В данном упражнении описана методика, которая может помочь отказаться от копирующих конструкторов. Создайте класс Х и объявите (но не...

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

Когда в классе нужен копирующий конструктор? - C++
Меня интересует вопрос когда в классе нужен копирующий конструктор.

Нужно ли прописывать конструктор и деструктор для чисто виртуального абстрактного класса - C++
Всем привет! Порылся в интернете, но не смог найти конкретного ответа на свой вопрос. Возможно я просто не смог грамотно сформулировать...

Деструктор класа, ошибка - C++
Есть класс, к примеру вектора, я максимально упростил его чтоб легче было понять ошибку, вот его реализация: Vector.h: #ifndef...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 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);
или нет? преподаватель ничего по этому поводу не сказал.
Помогите сделать правильно и главное разобраться.
Ответ Создать тему
Опции темы

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