SELECT TYPE 构造中的多态性分配

2024-04-03

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

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 there.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SELECT TYPE 构造中的多态性分配 的相关文章

  • 无法修改 char 数组

    考虑以下代码 char message foo void main void message bar 为什么 MPLAB IDE v8 63 中出现语法错误 我只是想改变字符数组的值 声明后不能像这样使用字符数组 如果您想为字符数组分配新值
  • 操作员 '??'不能应用于类型“T”和“T”的操作数

    我有以下通用方法 但 VS 给了我一个编译错误 运算符 不能应用于 T 和 T 类型的操作数 public static T Method
  • 无法安装 Visual Studio C++ 包含文件“excpt.h”

    我正在尝试编译一个 Visual Studio C 项目 但由于编译器报告 无法打开包含文件 excpt h 没有这样的文件或目录 我无法到达任何地方 该问题已在互联网上多次报告 但我找不到有关我的具体情况的任何帮助 问题不在于项目的包含路
  • 无法对非静态方法进行静态引用

    使用 Java 构建多语言应用程序 插入字符串值时出现错误R string资源 XML 文件 public static final String TTT String getText R string TTT 这是错误消息 错误 无法从类
  • 在 C++ 中创建未知具体类型的副本

    假设我们有以下类层次结构 class Base class Derived1 public Base class Derived2 public Base Given a Base 这可能指向一个Derived1 or Derived2ob
  • 使用两个不同的泛型参数调用泛型函数仍然可以编译

    下面的代码怎么可能编译通过 据我所知 count 函数是用两种不同的类型调用的 但编译器并没有抱怨并愉快地编译了这段代码 public class Test public static
  • FORTRAN 写()

    在开始之前 我必须先声明一下 我是 FORTRAN 的新手 我正在维护 1978 年的一段遗留代码 它的目的是从文件中读取一些数据值 处理这些值 然后将处理后的值输出到另一个文本文件 给出以下 FORTRAN 代码 INTEGER NM S
  • 多态性和数组指针[重复]

    这个问题在这里已经有答案了 我有一个A类 class A public virtual double getValue 0 还有B类 class B public A public virtual double getValue retur
  • Fortran if stop 需要 endif 吗?

    在 fortran 90 中 if stop 语句是否需要结束 endif example if foo eq 1 stop do some stuff do some stuff 是循环的一部分还是 stop 意味着程序结束时 endif
  • gfortran 未定义的引用

    我正在尝试编译一个依赖很多东西的程序 我使用并修改了提供的 makefile 来代表我的计算机设置 但在编译的最后一步中我不断收到许多未定义的引用 导致问题的命令行是 gfortran o cosmomc ParamNames o Matr
  • 为什么这个 C++ STL 分配器不分配?

    我正在尝试编写一个派生自的自定义 STL 分配器std allocator 但不知何故所有的电话allocate 去基础班 我已将范围缩小到以下代码 template
  • ios - NSObjCRuntime、NSZone 和 NSObject 中的解析问题

    我在用着AddThis http support addthis com customer portal articles 381270 addthis for ios quick start guide UCHnE8iXSs0在我的 iO
  • Java中的引用变量到底是什么?它与其他变量有何不同?

    我一直在研究 Java 中的继承 作者声明 被引用的对象类型 而不是引用变量的类型 决定了将执行哪个版本的重写方法 这种说法非常令人困惑 这本书所指的是多态性 更具体地通过动态调度 简而言之 想象一下以下类 public class Per
  • 如何在 Fortran 90 中迭代包含数字、单词和空格的字符串?

    文件说明 STL文件由以下部分组成 solid
  • Dart 2 类的构造函数与其他语言的多态性非常相似

    我需要用 a 来表示一张照片Dart 2班级 照片可以是矩形的 or circular 因此 通过多态性我可以写 import dart math class Photo double width double height double
  • 如何将mortran代码转换为fortran代码

    我有一些 Mortran 代码 来自 glmnet 我想阅读和编译 我知道在编译时 Mortran首先转换为Fortran 然后编译 如果有预处理器的话 如何安装 Mortran 预处理器 特别是 OS X 上的 Mortran3 我在以下
  • 映射存在类型列表

    我有一个要映射的存在类型对象的列表 像这样的东西 sealed abstract class IntBox val v Int case object IB1 extends IntBox 1 case object IB2 extends
  • 膨胀类 android.support.design.internal.BottomNavigationView 时出错

    我正在制作我的第一个应用程序 这是一个简单的应用程序 带有启动屏幕和主要活动 现在我有两个构建变体 免费版本 活动底部有 Admob 横幅 付费版本 该应用程序不会在底部显示 admob 横幅 而是将其替换为用于切换活动的底部导航视图 我将
  • 如何使用继承来建模 RESTful API?

    我有一个需要通过 RESTful API 公开的对象层次结构 但我不确定我的 URL 应该如何构建以及它们应该返回什么 我找不到任何最佳实践 假设我有从动物继承的狗和猫 我需要对狗和猫进行CRUD操作 我还希望能够对一般动物进行手术 我的第
  • 如何在 TypeScript 中禁用/抑制库中的错误?

    我打开了一些编译器开关来报告代码中的更多问题 例如严格的空检查 但我在使用的库中遇到了数十个错误 例如 default xxx node modules angular core src util decorators d ts 11 5

随机推荐