gpt4 book ai didi

compiler-errors - SELECT TYPE构造中的多态分配

转载 作者:行者123 更新时间:2023-12-02 10:42:14 27 4
gpt4 key购买 nike

我正在尝试定义一个分配不同类型数组的子例程。这是代码的简化版本:

subroutine Allocation1(Vec)
class(*), allocatable, intent(out) :: Vec(:)

select type(Vec)
type is(real(8))
allocate(Vec(10)); Vec = 0.D0
type is(complex(8))
allocate(Vec(10)); Vec = (0.D0,0.D0)
type is(integer)
allocate(Vec(10)); Vec = 0
endselect
endsubroutine Allocation1

但是我收到了三个我不理解的错误消息:
error #8306: Associate name defined in ASSOCIATE or SELECT TYPE statements doesn't have ALLOCATABLE or POINTER attribute   [VEC]

如您所见, VEC是可分配的数组,因此我认为此错误没有道理。这是什么意思,我该如何做?

我正在使用IVF XE 14.0.1.139。

最佳答案

看起来像编译器错误,可以与Gfortran和Solaris Studio一起使用。我建议您联系英特尔官方支持。

正如IanH指出的那样,其他编译器可能会错误地进行编译。无论如何,无论是否符合标准,该过程仍然没有用,因为要使选择类型起作用,仍必须已分配变量,因为过程的实际参数必须是多态的。您不能仅在此处传递real, allocatable

关于compiler-errors - SELECT TYPE构造中的多态分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26284342/

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