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

Конструктор копирования для класса с указателем на абстрактный класс - C++

Восстановить пароль Регистрация
 
Enfernuz
 Аватар для Enfernuz
22 / 22 / 1
Регистрация: 11.04.2011
Сообщений: 67
16.11.2011, 21:11     Конструктор копирования для класса с указателем на абстрактный класс #1
Всем привет.
Как реализовать конструктор копирования для класса Foo?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class Base
{
     public: 
             ...
             virtual void DoSmth() = 0;
};
 
class DerivedOne : public Base
{
      public: 
              ...
              virtual void DoSmth() { ... };
};
 
class DerivedTwo : public Base
{
      public: 
              ...
              virtual void DoSmth() { ... };
};
 
 
class Foo
{
     public:
             ...
     private:
             ...
             Base* b;
};
Заранее спасибо за ответы.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.11.2011, 21:11     Конструктор копирования для класса с указателем на абстрактный класс
Посмотрите здесь:

Класс, конструктор-копирования C++
создать класс вектор и реализовать конструктор по умолчанию, копирования и деструктор C++
C++ Класс матрица (не работает конструктор копирования)
C++ Создать конструктор копий и оператор присваивания для класса компьютер и члена класса марка
Классы (объединить мой класс с проверкой на его работу, убрать гото и добавить конструктор копирования) C++
C++ Создать конструктор копирования класса
C++ Конструктор копирования шаблонного класса
C++ Cделать конструктор по умолчанию и копирования для класса

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Сыроежка
Заблокирован
16.11.2011, 21:17     Конструктор копирования для класса с указателем на абстрактный класс #2
Цитата Сообщение от Enfernuz Посмотреть сообщение
Всем привет.
Как реализовать конструктор копирования для класса Foo?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class Base
{
     public: 
             ...
             virtual void DoSmth() = 0;
};
 
class DerivedOne : public Base
{
      public: 
              ...
              virtual void DoSmth() { ... };
};
 
class DerivedTwo : public Base
{
      public: 
              ...
              virtual void DoSmth() { ... };
};
 
 
class Foo
{
     public:
             ...
     private:
             ...
             Base* b;
};
Заранее спасибо за ответы.
Вы можете вообще его не реализовывать и использовать тот, который у вас есть по умолчанию. Проблема в том, что из той информации, которую вы предоставили, совершенно не ясно, как должен копироваться указатель на Base*. То ли должна создаваться идентичная копия этого указателя, то ли в куче вам нужно создавать объект, аналогичный тому, на который указывает указатель исходного объекта и указателю присваивать адрес этого объекта.

Если имеется в виду последний случай, то вам нужно писать функцию, которая имитирует собой виртуальный конструктор.
Enfernuz
 Аватар для Enfernuz
22 / 22 / 1
Регистрация: 11.04.2011
Сообщений: 67
16.11.2011, 21:44  [ТС]     Конструктор копирования для класса с указателем на абстрактный класс #3
Сыроежка, вопрос в контексте второго варианта. Спасибо за подсказку.
Yandex
Объявления
16.11.2011, 21:44     Конструктор копирования для класса с указателем на абстрактный класс
Ответ Создать тему
Опции темы

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