Eiffel:错误:变量未正确设置。在make调用default_create或任何父级中调用/重新定义default_create

时间:2019-01-12 19:40:12

标签: eiffel void-safety

不确定,但这使我花了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 :(得分:2)

default_create打了一些电话。可能会调用Current(直接或间接,例如Current作为参数传递到某个地方)。如果此时未设置属性attr,则当前对象尚未完全初始化,并且在常规功能调用中使用它可能会导致对Void目标的调用(尤其是由于多态性)。为避免此问题,需要在涉及Current的任何调用之前设置所有属性。