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

时间:2014-04-09 02:39:49

标签: pointers fortran derived-types

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

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

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

这是否可以在没有编写指向我的子程序的情况下实现?

1 个答案:

答案 0 :(得分:1)

没有

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

除了语法之外,您还想要做些什么:

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

  • 您无法将指针与未分配的内容相关联。如果没有分配任何东西,那么就没有任何东西可以指出。

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

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