Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.23;
Скачать: CL | DM;

Вниз

Как создать полную копию объекта?   Найти похожие ветки 

 
AndreiR   (2003-01-14 16:41) [0]

Есть указатель на объект некоторго класса. Класс мы не знаем (Но знаем, что он потомок некоторого базового класса). Нужно создать копию этого объекта.
Вся проблема в том, что не удается создать экземпляр этого класса, так как сам класс неизвестен. Метод Create у свойства ClassType (MyObject.ClassType.Create) не помогает. Похоже он вообще не вызывает никаких конструкторов.
Надеюсь проблема понятна.
Спасибо.


 
Skier ©   (2003-01-14 17:03) [1]

>AndreiR
см.
1) TObject.ClassName
2) GetClass(...)
3) RegisterClass(es)


 
id_privin ©   (2003-01-14 17:05) [2]

NewInstance + Create + Assign = все получиться


 
eheyler   (2003-01-14 17:13) [3]

конструкция MyObject.ClassType.Create вызывает
конструктор класса TObject.

Если у базового класса конструктор виртуальный,
то приведение к нему даст возможность вызвать
нужный конструктор.

MyObject2 = TBaseClass(MyObject.ClassType).Create(...);

(а если нет - то надо сделать
его виртуальным, поскольку создание объекта через
ссылку на класс без виртуальных конструкторов особого смысла не имеет, за исключением вырожденных случаев)

И далее
MyObject2.Assign(MyObject);
// Предполагается, что TMyClass - потомок TPersistent
// и ты переписал виртуальный метод Assign


 
Skier ©   (2003-01-14 17:15) [4]

>AndreiR
Забыл 2 важные вещи
1) Конструктор - виртуальный
2) и для полной копии нужен Assign


 
AndreiR   (2003-01-14 17:18) [5]

COOOOL!
Всем спасибо за помощь.
:-)


 
eheyler   (2003-01-14 17:34) [6]

Да, ещё:
под TBaseClass я подразумевал

TBaseClass = class of TBase;

где TBase - твой базовый класс



Страницы: 1 вся ветка

Текущий архив: 2003.01.23;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.015 c
1-72376
Это опять Чайник.+
2003-01-13 12:37
2003.01.23
Помогите пожалуйста


14-72540
Poirot
2003-01-03 08:57
2003.01.23
Киньте примеры к книгеDirectX. Графика в проектах Delphi.


1-72319
Gumbert-Gumbert
2003-01-15 15:58
2003.01.23
Как с помощью директив компилятора определить, что стоит WinXP?


1-72271
Alek_1
2003-01-15 00:53
2003.01.23
Jpg и Image


1-72294
smok_er
2003-01-15 12:01
2003.01.23
Инициализация record ов