Eiffel: Ошибка: переменная установлена ​​неправильно. в вызове make default_create или любом родительском вызове / переопределении default_create - PullRequest
0 голосов
/ 12 января 2019

Не совсем точно, но это делает разное время, когда я получаю 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 Ответ

0 голосов
/ 13 января 2019

default_create делает несколько звонков. Может быть вызов на Current (прямой или косвенный, например, если Current передается где-то в качестве аргумента). Если атрибут attr не установлен в этой точке, текущий объект не полностью инициализирован, и использование его в обычных вызовах объектов может привести к вызовам в объекте Void (в частности, из-за полиморфизма). Чтобы избежать этой проблемы, необходимо установить все атрибуты перед любыми вызовами, связанными с Current.

...