работа классов в Lazarus

Вопросы программирования и использования среды Lazarus.

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

работа классов в Lazarus

Сообщение shentsev » 08.11.2006 13:53:36

Пишу:

MyClass = class
mm:integer;
nn:integer;
end;

....

var MyTest:MyClass;
Begin
MyTest.mm=1; {Здесь вылетает с ошибкой Project raised exception class - External:SIGSEGV }
end;
Подскажите в чем причина.
shentsev
незнакомец
 
Сообщения: 4
Зарегистрирован: 08.11.2006 13:45:44

Сообщение S!V » 08.11.2006 14:42:13

MyTest - указатель на экземпляр класса MyClass.
Он(экземпляр) у тебя не создаётся.
Правильней было бы:
Код: Выделить всё
var
  MyTest :MyClass;
begin
  MyTest := MyClass.create;
  MyTest.mm := 1;
  MyTest.Free;
end;


И ешё, в именах типов принято ставить первую 'T' (TMyClass, например).
S!V
незнакомец
 
Сообщения: 6
Зарегистрирован: 07.11.2006 23:31:21

Сообщение shentsev » 08.11.2006 15:15:44

Спасибо, работает.
shentsev
незнакомец
 
Сообщения: 4
Зарегистрирован: 08.11.2006 13:45:44

Сообщение SergKam » 08.11.2006 22:29:25

человек видно из с++ пришел(или вообще новичек)
SergKam
постоялец
 
Сообщения: 251
Зарегистрирован: 16.11.2005 21:31:11
Откуда: Украина,Харьков

Сообщение shentsev » 09.11.2006 10:32:19

SergKam писал(а):человек видно из с++ пришел(или вообще новичек)
Я лет 5 назад как в паскале работал, но что-то такого не припомню. Необходимость вызова конструктора как и деструктора в явном виде в данном случае для меня далеко не очевидна, тем более что мной он явно не перегружается.
shentsev
незнакомец
 
Сообщения: 4
Зарегистрирован: 08.11.2006 13:45:44

Сообщение Sergei I. Gorelkin » 09.11.2006 12:38:54

shentsev писал(а):Я лет 5 назад как в паскале работал, но что-то такого не припомню. Необходимость вызова конструктора как и деструктора в явном виде в данном случае для меня далеко не очевидна, тем более что мной он явно не перегружается.


Это относится к объектам, объявленным как object - в Паскале были такие, и до сих пор поддерживаются. Если же тип объявлен как class, вызов конструктора и деструктора обязателен, т.к. именно они обеспечивают создание и удаление экземпляров класса.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1395
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google Adsense [Bot] и гости: 81

Рейтинг@Mail.ru