1

我有这个简单的代码,我想访问 HASH_TABLE 中的 ARRAYED_SET 中的一个元素,但我得到一个错误:

Error: target of the Object_call might be void.
What to do: ensure target of the call is attached.

这是我的代码:

class
APPLICATION

inherit
    ARGUMENTS

create
    make

feature {NONE}
make
local

    elem: ARRAYED_SET[INTEGER]
    table: HASH_TABLE[ARRAYED_SET[INTEGER], INTEGER]
do
    create elem.make (3)
    create table.make (1)

    elem.put (4)
    table.put (elem, 1)

    table.at (1).go_i_th (1)
end
end
4

1 回答 1

2

当您访问 a 中的项目时HASH_TABLE,该项目可能不存在。因此这个特征的签名是

item (k: K): detachable G

如果未找到该项目,则返回Void(或扩展类型的默认值)。因此,当您尝试使用来自 的项目时HASH_TABLE,应检查它是否已附加。这可以通过替换来实现:

table.at (1).go_i_th (1)

和:

if attached table.at (1) as la_element then
  la_element.go_i_th (1)
end
于 2014-01-04T14:42:55.740 回答