我想要創建一個CONTAINER類,它維護一個CRITTER對象數組(我已經創建和測試過了),注意,有各種CRITTER子類,它們是從CRITTER超級類)。目的是從這個數組中添加和刪除CRITTER對象。這是容器類的樣子:如何在Eiffel中添加和刪除數組中的對象
class
CONTAINER
create
make
feature
num: detachable INTEGER
list: ARRAY[CRITTER]
make
local
do
create list.make_empty
num := 0
end
addCritter(critter: CRITTER)
do
list.put(animal, num)
num := num + 1
end
removeCritter(critter: CRITTER)
do
list.put (list.at (num), ???) -- put last element in position of element to be removed
list.remove_tail (num) -- remove tail
num := num - 1
end
end
兩個問題: 首先,我可以實例中應用的容器類,但是當我打電話
create container.make
container.addCritter(myCritter)
我得到的一個先決條件,無效指數違規第二行錯誤。這可能是因爲我沒有設置數組的上限和下限。但是,當我嘗試這樣做時,出現語法錯誤。哪種方法可以解決這個問題?
其次,爲了從數組中刪除一個對象,如果我能夠獲得索引值,將會有所幫助,但是我看不到任何這樣做的函數,除非我遺漏了某些東西。