|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
ООП. Обращение к полю объекта, до его конструктора
Очень нужно решить проблему. Делаю симуляцию взрыва, короче неважно. По делу есть класс
Код:
type TWorld_ODE = class Lavel:string; ... constructor Create; ... И есть процедура FormCreate, в которой я по идее должен написать (форма у меня называется TfrmRagdoll) Код:
procedure TfrmRagdoll.FormCreate(Sender: TObject); begin WorldODE.Lavel:='low'; WorldODE := TWorld_ODE.create{('Hight')};//Level - качество физикиэ ... |
#2
|
||||
|
||||
А зачем ты вообще выполняешь
Код:
WorldODE.Lavel:='low'; Для чего это надо и, возможно, это сделать иначе? Велик и могуч наш Object Pascal ! ICQ: 357-591-887 |
#3
|
||||
|
||||
а не проще присваивать значение "low" в самом классе при создании с определенньм пораметром?
|
#4
|
|||
|
|||
Укажи конструктор как виртуальный и дефолтное значение присвяивай в конструкторе. Если сделать конструктор виртуальным, то дефолтный конструктор без параметров будет невиден. Обращаться к объекту до его создания нельзя.
Код:
type TMyClass = class ... public constructor Create(AParam : String); virtual; // теперь Create() "невиден" end; |
#5
|
|||
|
|||
Я наверно немножко вас запутал, плохо расписав задачу и написав {('Hight')};. Параметр действительно закоментирован, это не ошибка.
2Karsh, задавшись этим вопросом, я написал: Код:
constructor TWorld_ODE.create; ... begin WorldODE.Lavel := 'Hight'; ... 2Imikle, ошибка та же, что и описаная выше |
#6
|
||||
|
||||
Вместо:
Код:
constructor TWorld_ODE.create; ... begin WorldODE.Lavel := 'Hight'; ... Попробуй: Код:
constructor TWorld_ODE.create; ... begin Self.Lavel := 'Hight'; ... Велик и могуч наш Object Pascal ! ICQ: 357-591-887 |
#7
|
|||
|
|||
точняк, совсем вылетела из головы эта ссылка (Self) на экземпляр класса. Спасибо. Тему можно закрыть (или удалить).
Последний раз редактировалось DungeonLords, 24.02.2009 в 21:42. |