将Standard.Natural转换为Ada.Containers.Count_Type

Bas*_*ond 1 containers ada type-conversion

我实例化了Ada.Containers.Vectors通用包,如下所示:

package My_Vectors is new Ada.Containers.Vectors(
    Element_Type => My_Type, 
    Index_Type => Natural);
Run Code Online (Sandbox Code Playgroud)

说,我有一个向量和Standard.Natural值声明:

Foo_Vector: My_vectors.Vector;
Bar_Natural: Natural := 4;
Run Code Online (Sandbox Code Playgroud)

如果我打电话

Foo_Vector.Set_Length(Bar_Natural);
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

expected type "Ada.Containers.Count_Type"
found type "Standard.Natural"
Run Code Online (Sandbox Code Playgroud)

有没有办法将Bar_Natural转换为Ada.Containers.Count_Type

Bas*_*ond 6

对不起,我真的太傻了,实际上读过我的错误所说的一切.我尝试使用以下方法转换自然:

Ada.Containers.Vectors.Count_Type(Bar_Natural)
Run Code Online (Sandbox Code Playgroud)

这没有任何意义! 阅读错误,看到Count_Type在包Ada.Containers中定义是微不足道的.

因此,正确的转换将是:

Ada.Containers.Count_Type(Bar_Natural);
Run Code Online (Sandbox Code Playgroud)

给予

Foo_Vector.Set_Length(Ada.Containers.Count_Type(Bar_Natural));
Run Code Online (Sandbox Code Playgroud)