【问题标题】:Can we Modify the accessibility of Type-bound Procedures in Fortran我们可以在 Fortran 中修改类型绑定过程的可访问性吗
【发布时间】:2021-12-04 23:22:18
【问题描述】:
MODULE MyTypeMod

TYPE MyType
PRIVATE
INTEGER, ALLOCATABLE :: Num
CONTAINS
  PROCEDURE, PUBLIC :: IsNum!To check Allocation of Num
  ...
END TYPE MyType

CONTAINS
...
END MODULE MyTypeMod
PROGRAM testMyType
USE MyTypeMod, ONLY : MyType

...
END PROGRAM testMyType

在此模块和程序中,我们可以修改可访问性状态“IsNum”类型绑定过程吗?我们可以在 testMyTypeMod PROGRAM 中将“IsNum”过程设为私有吗?

【问题讨论】:

  • 您刚刚尝试将public 更改为private。这使它衍生到模块。如果这不是你想要的,那你到底想要什么?
  • 我希望类型绑定过程 (IsNum) 的可访问性状态对于它所导入的所有模块/程序都是 PUBLIC,但是对于这个特定的程序 (testMyType),我希望它是 PRIVATE .
  • 这是不可能的。
  • 如果程序不在唯一列表中,“USE MyTypeMod, ONLY : ”将在主程序端隐藏它..
  • @Holmz 我相信这只适用于常规程序,不适用于类型绑定程序?

标签: fortran procedure fortran2008


【解决方案1】:

根据Fortran 2018 draft standard7.5.5 部分的9

可以通过该类型的任何可访问对象访问公共类型绑定过程。私有类型绑定过程只能在包含类型定义的模块及其后代中访问。

因此无法更改类型绑定过程的可访问性。

目前有 a proposal 更新未来的 Fortran 标准,该标准建议使您想做的事情的一个子集成为可能。

您可能想要提出新的建议来更新标准。这也可能是找出您想做的事情目前无法实现的最佳方式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-10
    • 2013-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-18
    • 2019-04-08
    • 2018-09-01
    相关资源
    最近更新 更多