Ошибка Generic?

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Ответить
trifon
постоялец
Сообщения: 135
Зарегистрирован: 24.12.2006 11:08:35

Ошибка Generic?

Сообщение trifon »

Кажется я нашел ошибку Generic в fpc-2.2.0

Код: Выделить всё

type
  Generic TVarray<Ti> = class
  type public
    PChunk32 = ^TChunk32;
    TChunk32 = record
      citems : array[0..31] of Ti;
      next : PChunk32;
    end;
  var protected
      items : PChunk32;
  end;


var
  A : TVarray.TChunk32;
begin
end.


Как я понимаю такой код не допустим, однако он компилируется.
Note: Local variable "A" not used - единственное предупреждение, однако переменная A не может быть объявлена из за поля citems : array[0..31] of Ti;
volvo877
незнакомец
Сообщения: 8
Зарегистрирован: 04.09.2005 14:34:53

Сообщение volvo877 »

trifon, а ты обратиться к этой переменной пробовал? Попробуй:

Код: Выделить всё

var
  A : TVarray.TChunk32;
begin
  A.citems[1] := 0;
end.
, что будет?

А после специализации - все нормально:

Код: Выделить всё

type
  TArr = specialize TVarray<integer>;
var
  A : TArr.TChunk32;
begin
  A.citems[1] := 0;
end.
trifon
постоялец
Сообщения: 135
Зарегистрирован: 24.12.2006 11:08:35

Сообщение trifon »

Уж наверное, если мне пришло в голову попытаться объявить её, напрашивался следующий шаг - попытаться её использовать.

Это всё равно ошибка компилятора, хотя и не критичная.
Ответить