gpt4 book ai didi

oop - Ada Finalization Adjust 程序 - 放在这里什么?

转载 作者:行者123 更新时间:2023-12-04 15:57:07 25 4
gpt4 key购买 nike

给出以下声明:

   type Food_T is abstract tagged null record;
type Food_Ptr is access all Food_T'Class;

type Wrapper_T is new Ada.Finalization.Controlled with record
Ptr : Food_Ptr;
end record;

procedure Adjust (Object : in out Wrapper_T) is
begin
null; -- what goes here ?
end Adjust;

我想知道当我不知道 Object.ptr 将指向什么类型时(和来源和目的地在哪里!)。

如有任何帮助,我们将不胜感激。

谢谢,

新创建。

最佳答案

我想你的意思是:

procedure Adjust (Object : in out Wrapper_T) is
begin
Object.Ptr := new Food_T'Class'(Object.Ptr.all);
end Adjust;

然后 Object.Ptr.all 的工作就是确保它确实是一个深拷贝,当然。(为此,Object.Ptr.all 的类型可能需要派生 Ada.Finalization.Controlled。为此,您可能需要将 Food_T 设为 interface,以便 Food_T 派生类型也可以派生自 Ada.Finalization。受控。)

关于oop - Ada Finalization Adjust 程序 - 放在这里什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7125468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com