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

Вниз

Templates and Inheritance   Найти похожие ветки 

 
Exception   (2013-02-14 09:21) [0]

type
 TValue = class(TObject)
 public
   X: Integer;
 end;

 TValueHolder<TType: TValue> = class(TObject)
 private
   V: TType;
 public
   procedure Copy(AHolder: TValueHolder<TValue>);
 end;

 TValue2 = class(TValue)
 end;

 TValueHolder2 = class(TValueHolder<TValue2>)
 end;

{ TValueHolder<TType> }

procedure TValueHolder<TType>.Copy(AHolder: TValueHolder<TValue>);
begin
 V.X := AHolder.V.X;
end;

{ TForm2 }

procedure TForm2.Button1Click(Sender: TObject);
var
 Holder: TValueHolder<TValue2>;
 Holder2: TValueHolder2;
begin
 Holder := TValueHolder<TValue2>.Create;
 Holder2 := TValueHolder2.Create;

 Holder.Copy(Holder2); // [dcc32 Error] Unit2.pas(60): E2010 Incompatible types: "Unit2.TValueHolder<Unit2.TValue>" and "TValueHolder2"
end;


Delphi XE3

Why-у-у-у-у? (С) Annie Lennox


 
Плохиш ©   (2013-02-14 12:35) [1]

Потому что это два разных типа. Прочитай документацию.


 
Exception   (2013-02-14 14:28) [2]

> Плохиш ©   (14.02.13 12:35) [1]

Да ну...

Метод procedure Copy(AHolder: TValueHolder<TValue>); должен принимать любого наследника класа TValueHolder с параметрическим типом-наследником класса TValue.
TValue2 унаследован от TValue.
TValueHolder2 унаследован от TValueHolder<TValue>.

Или наследование в шаблонах отменили?
Это временно, пока компилятор не допилили?
Или навсегда?


 
знайка   (2013-02-14 15:00) [3]


> TValueHolder2 унаследован от TValueHolder<TValue>.
это вам только кажется.



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

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

Наверх




Память: 0.47 MB
Время: 0.006 c
15-1370005892
"Добрый Сок"
2013-05-31 17:11
2013.11.17
Расширение FF "Инструмент разработчика" для IE. Посоветуйте


2-1360495510
Максим
2013-02-10 15:25
2013.11.17
Базы данных


15-1370184813
Eraser
2013-06-02 18:53
2013.11.17
Panel и fade эффект


15-1370112861
Разведка
2013-06-01 22:54
2013.11.17
как из консоли задать новый шлюз FreeBSD


15-1369991585
Дмитрий СС
2013-05-31 13:13
2013.11.17
Очень глобальный HotKey.