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

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

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

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

12.12.2013, 21:45. Просмотров 320. Ответов 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++):

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

Копирующий конструктор - C++
Добрый вечер всем! Следущая проблема - решила создать свой персональный vector - int_array. Но возникла проблема... Не пойму, как...

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ForEveR
В астрале
Эксперт С++
7971 / 4733 / 321
Регистрация: 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);
или нет? преподаватель ничего по этому поводу не сказал.
Помогите сделать правильно и главное разобраться.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.12.2013, 17:05
Привет! Вот еще темы с ответами:

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

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

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

Копирующий конструктор класса, содержащего переменную-член указатель - C++
Практикуюсь по книге Стенли Липпмана &quot;Язык программирования C++ вводный курс&quot; 4 изд. Упражнение 13.4. Используя приведенный ниже набросок...


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

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

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