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

Создать копию объекта производного класса зная указатель на базовый - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Перевод программы на С++ с Паскаля http://www.cyberforum.ru/cpp-beginners/thread424970.html
var sn,s:string; l,k,kod:integer; v,p:real; begin writeln('Введите строку'); readln(s); l:=length(s); p:=1; k:=1; repeat sn:='';
C++ Абстрактный класс вот у меня есть классы: class CCommand { public: virtual ~CCommand() {}; virtual void execute(CShape *selection)=0; virtual void unexecute()=0; virtual CCommand* clone()=0; }; http://www.cyberforum.ru/cpp-beginners/thread424964.html
Задачник по C/C++ C++
Здравствуйте! Ребята, может кто посоветует хорошую книгу с задачами, и желательно с решениями к ним по С/С++ ? Буду очень благодарен!;)
C++ Возведение в степень по модулю для чисел близких к max long long
Даны числа A,B,C<=2^63-1 Надо посчитать A^B mod С. прошу не выкладывать стандартный алгоритм для Int, так как неверный ответ в итоге получается.
C++ как определить число в строке? http://www.cyberforum.ru/cpp-beginners/thread424953.html
У меня по задаче сказанно ввести строку и найти произведение входящих в строку чисел, не могу понять как определить числа, поскольку интернет весь облазил и полезного мало.
C++ Все та же ошибка error C2447 Всем привет!При компиляции,компилятор высвечивает мне "error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)", в 17-ой строчке.Я по учебнику попытался написать программу с использованием аргументов переменных функции main,но в итоге не знаю как исправить эту ошибку.Буду благодарен за помощь! Код: #include "stdafx.h" #include <iostream> using... подробнее

Показать сообщение отдельно
KAlexey
0 / 0 / 0
Регистрация: 09.01.2012
Сообщений: 7
09.01.2012, 15:05     Создать копию объекта производного класса зная указатель на базовый
Добрый день! Вопрос в следующем... Возможно ли создать копию объекта производного класса зная указатель на базовый класс? У меня получился вариант, приведенный ниже. Однако в нем не нравится функция clone которая динамически сравнивает типы с известными ей, и потом вызывает создание нового объекта, копия производного. Минус здесь, всегда приходится знать все типы производных классов от базового. Если появится новый придется делать исправления.
Какие еще возможны здесь варианты? Может есть вариант с использованием шаблонов или еще чего то? Заранее спасибо!

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include <iostream>
 
using namespace std;
 
class Base
{
public:
  Base()
  {
     cout<<"Base constructor default"<<endl;
  };
  
  Base(const Base& obj)
  {
     cout<<"Base constructor copy"<<endl;
  };
  virtual ~Base() {;}
};
 
class Derived1:public Base
{
  public:
  Derived1()
  {
    cout<<"Derived1 constructor default"<<endl;
  }
 
  Derived1(const Derived1& obj)
  {
    cout<<"Derived1 constructor copy"<<endl;;
  }
};
 
class Derived2:public Base
{
  public:
  Derived2()
  {
    cout<<"Derived2 constructor default"<<endl;
  }
 
  Derived2(const Derived2& obj)
  {
    cout<<"Derived2 constructor copy"<<endl;;
  }
};
 
void clone(Base* pBase)
{
  cout<<"clone object"<<endl;
  if (Derived1 *p=dynamic_cast<Derived1*>(pBase)) new Derived1(*p) ;
  if (Derived2 *p=dynamic_cast<Derived2*>(pBase)) new Derived2(*p) ;
}
 
void main()
{
  Derived1 d1;
  Derived2 d2;
  Base* pBase =&d1;
  clone(pBase);
  pBase =&d2;
  clone(pBase);
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 12:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru