Eiffel: Ошибка: переменная установлена неправильно. в вызове make default_create или любом родительском вызове / переопределении default_create
Не уверен точно, но это делает разное время, я получил Error: variable is not properly set.
в порядке вызова процедур создания. Я понял, что создание атрибутов класса перед вызовом default_create
казалось, решил проблему. Почему это так? Не похоже, что default_create вызывает что-то в моей процедуре make??!!!
Попробуйте привести пример, даже если я не думаю, что смогу воспроизвести его на простом примере...
За работой
class A
feature
attr: B
make
do
create attr
default_create
end
end
Ошибка: переменная установлена неправильно.
class A
feature
attr: B
make
do
default_create
create attr
end
end
1 ответ
default_create
делает несколько звонков. Там может быть звонок на Current
(прямой или косвенный, например, если Current
передается где-то в качестве аргумента). Если атрибут attr
не установлен в этой точке, текущий объект не полностью инициализирован, и использование его в обычных вызовах объектов может привести к вызовам в Void target (в частности, из-за полиморфизма). Чтобы избежать этой проблемы, необходимо установить все атрибуты перед любыми вызовами, связанными с Current
,