type
TArrayHelper<T> = class
class procedure CoolProc(var arr: TArray<T>); // Ваша процедура
end;
…
implementation
class procedure TArrayHelper<T>.CoolProc(var arr: TArray<T>); // Реализация Вашей процедуры
var
Tmp: T;
begin
Tmp := arr[0];
arr[0] := arr[4];
arr[4] := Tmp;
end;
procedure TForm1.Button1Click(Sender: TObject); // Проверка работы
var
i: integer;
iarr: TArray<Integer>;
sarr: TArray<String>;
begin
iarr := TArray<Integer>.Create(1, 2, 3, 4, 5);
sarr := TArray<String>.Create('one', 'two', 'three', 'four', 'five');
TArrayHelper<Integer>.CoolProc(iarr); // Вызов для целых чисел
TArrayHelper<String>.CoolProc(sarr); // Вызов для строк
for I := 0 to 4 do
begin
memo1.Lines.Add(IntToStr(iarr[i]));
memo2.Lines.Add(sarr[i]);
end;
end;
я возможно не так задал вопрос. хотелось бы узнать, почему компилятор не может все проверить на этапе компиляции. зачем еще добавлять динамическую проверку?
class Object {
public:
virtual ~Object() {}
};
class Weapon : public Object {
public:
virtual ~Weapon() {}
};
class Player : public Object {
public:
virtual ~Player() {}
};
void handleObject(Object* object) {
// What is object? Is it weapon or player?
};
// ....
Object* object = rand() % 100 > 50 ? new Weapon() : new Player();
handleObject(object);
Переход с linux на Windows, подводные камни?Да никаких особых подводных камней нет. Это просто разные системы имеющие разные достоинства и недостатки.