class
MAP[G]
create
make
feature --attributes
g_array: ARRAY[G]
size:INTEGER
feature{NONE}
make
do
g_array.make_empty
size:=0
end
class
MAP_TESTING
m: MAP[INTEGER]
create m.make
print(m.size)
Первый класс состоит из массива и его размера. Когда я попытался создать объект m
из ARRAY, ничего не распечатывается, когда я помещаю print(m.size)
. Правильно ли я создаю массив? Я использую правильную функцию make
для ARRAY
? Почему ничего не печатает?
---------------------------
class
MAP[G]
create
make
feature --attributes
g_array: ARRAY[G]
size:INTEGER
feature{NONE}
make
--I left this blank
end
class
MAP_TESTING
m: MAP[INTEGER]
create m.make
print(m.size)
Это на самом деле работает, когда я оставил make
пустым. Он распечатывает 0
. Но это нехорошо, потому что очевидно, что если я вызову другие функции, используя массив в MAP
, это не сработает. На самом деле я пытался использовать другие функции из класса ARRAY, но получил ошибку компиляции.
g_array.make_empty
вызывает исключениеFeature call on void target
, посколькуg_array
не инициализирован. Поэтому операторprint
вообще не выполняется. Правильный код заменит вызов функции вg_array
инструкцией по созданию вg_array
, которая создаст объект массива, а затем выполнит для негоmake_empty
. - person Alexander Kogtenkov   schedule 23.02.2014