首页 文章

Fortran派生类型 - 私有数组的公共指针

提问于
浏览
1

我正在尝试定义一个具有私有可分配数组的Fortran派生类型 . 但是,我希望能够通过公共指针访问该阵列,以便在其他模块中使用 . 例如 .

type,public :: test
private
 real,allocatable :: a(:,:,:)
contains
 real,pointer,dimension(:,:,:),public :: point => a
end type test

我在尝试上面时遇到编译器错误 .

如果没有编写指向我的子程序,这是否可行?

1 回答

  • 1

    没有 .

    语法错误可能是因为您在类型定义的类型绑定过程部分(包含之后)中具有指针组件,而不是在组件部分(包含之前)中 .

    除了语法之外,您还想要做一些问题:

    • 您无法将指针与类型定义的组件相关联 . 指针可以与对象的组件(子对象)相关联 . 同样,您也无法将指针与不具有target属性的内容相关联 . 类型和类型的类型不能具有target属性 . 该类型的变量或对象的指针组件指向的对象可以具有目标属性 .

    • 您无法将指针与未分配的内容相关联 . 如果没有分配某些东西,那么就没有什么值得指出的了 .

    • 指针组件的初始化程序不能引用可分配的内容 . 除了target属性之外,它引用的东西必须具有SAVE属性 . 与TARGET属性一样,变量具有save属性,而不是类型或组件定义 .

    • 将指针与对象的组件相关联可能会使组件首先处于私有状态 . 这导致了一个问题 - 你想做什么?

相关问题