Помощь - Поиск - Пользователи - Календарь
Полная версия: Property
Форум «Всё о Паскале» > Pascal, Object Pascal > 32 битные компиляторы
volvo
Доброго времени суток всем smile.gif

Есть вот такая проблемка: написан класс, работающий с вектором (я приведу его сильно упрощенный вариант):
Type
  TVector = Object
  Private
    T: Record
    Case Boolean Of
      False: (vec: Array[0 .. 2] Of Double);
      True : (X, Y, Z: Double);
    End;

    Function GetArr(index: Integer): Double;
    Procedure SetArr(index: Integer; v: Double);

  Public
    Constructor Create(x, y, z: Double); // Хотя это, в принципе, неважно...

    Property Items[index: Integer]: Double Read GetArr Write SetArr; Default;
  End;

Function TVector.GetArr(index: Integer): Double;
Begin result := T.vec[index] End;
Procedure TVector.SetArr(index: Integer; v: Double);
Begin T.vec[index] := v End;


Вроде все правильно, но не работает sad.gif
Чего хочется добиться? Чтобы можно было обращаться к элементам вектора через массив (НЕ через X, Y, Z) вот так:
Var
  V: TVector;
Begin
  V[0] := 12.3; // Аналогично V.T.vec[0];
  V[1] := 34.5; // Аналогично V.T.vec[1];
  ...
End.

Если у кого-то есть какие-то предположения, You Are Welcome rolleyes.gif
volvo
Все, спасибо, вопрос снят...

FPC позволяет устанавливать Default Property для Class-ов, а у меня был Object ...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.