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,

Другие вопросы по тегам