Это код, который устанавливает все мои указатели, записи и прочее.
type BSTNode;
type BSTNodePtr is access BSTNode;
type BSTNode is record
key: Key_Type;
data: Item_Type;
left, right: BSTNodePtr;
end record;
type BSTree is record
root: BSTNodePtr;
end record;
У меня есть функция:
function contains(key: Key_Type; t: BSTree) return Boolean is
temp_node : BSTNodePtr := t.root;
right : boolean;
left : boolean;
temp_tree : BSTree;
begin
if temp_node.all.key = key then --error occurs
return true;
elsif temp_node.all.left /= null and
temp_node.all.right /= null then
temp_tree.root := temp_node.all.left;
left := contains(key, temp_tree);
temp_tree.root := temp_node.all.right;
right := contains(key, temp_tree);
if left = true or right = true then
return true;
else
return false;
end if;
else
return false;
end if;
end contains;
Каждый раз, когда я пытаюсь выполнить .all, я получаю сообщение об ошибке ограничения, проверка доступа не выполняется. Я знаю, что это потому, что он не знает, выделен ли этот код или нет, но я не знаю, что мне нужно сделать, чтобы иметь доступ к нему или заставить его делать это в любом случае, не сообщая об ошибке. Если кто-то может помочь или знает, что я делаю неправильно, это будет высоко ценится. Спасибо!