Форум: "Начинающим";
Текущий архив: 2013.11.17;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.002 c