Пишу:
MyClass = class
mm:integer;
nn:integer;
end;
....
var MyTest:MyClass;
Begin
MyTest.mm=1; {Здесь вылетает с ошибкой Project raised exception class - External:SIGSEGV }
end;
Подскажите в чем причина.
работа классов в Lazarus
Модератор: Модераторы
MyTest - указатель на экземпляр класса MyClass.
Он(экземпляр) у тебя не создаётся.
Правильней было бы:
И ешё, в именах типов принято ставить первую 'T' (TMyClass, например).
Он(экземпляр) у тебя не создаётся.
Правильней было бы:
Код: Выделить всё
var
MyTest :MyClass;
begin
MyTest := MyClass.create;
MyTest.mm := 1;
MyTest.Free;
end;
И ешё, в именах типов принято ставить первую 'T' (TMyClass, например).
- Sergei I. Gorelkin
- энтузиаст
- Сообщения: 1409
- Зарегистрирован: 24.07.2005 14:40:41
- Откуда: Зеленоград
shentsev писал(а):Я лет 5 назад как в паскале работал, но что-то такого не припомню. Необходимость вызова конструктора как и деструктора в явном виде в данном случае для меня далеко не очевидна, тем более что мной он явно не перегружается.
Это относится к объектам, объявленным как object - в Паскале были такие, и до сих пор поддерживаются. Если же тип объявлен как class, вызов конструктора и деструктора обязателен, т.к. именно они обеспечивают создание и удаление экземпляров класса.
