首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >传递多态参数时,泛型没有特定的函数

传递多态参数时,泛型没有特定的函数
EN

Stack Overflow用户
提问于 2016-05-20 01:56:56
回答 1查看 1.2K关注 0票数 1

我为下列函数创建了一个接口

代码语言:javascript
运行
复制
Interface numd
  Module Procedure :: numcl_int8,    numcl_int16  
  Module Procedure :: numcl_int32,   numcl_int64  
  Module Procedure :: numcl_real32,  numcl_real64  
  Module Procedure :: numcl_real128  
End Interface numd

为输出定义如下的函数: Int8、Int16、Int32、Int64、Real32、Real64、Real128。

代码语言:javascript
运行
复制
Function numcl_int8 (t, mold) Result (b)
  Integer (Int8) :: b
  Class (*), Intent (In) :: t
  Integer (Int8), Intent (InOut) :: mold
End Function numcl_int8

我搞错了

代码语言:javascript
运行
复制
There is no specific function for the generic 'numd' at (1) 

在以下子例程中调用numd时

代码语言:javascript
运行
复制
Subroutine opscanc (ct)
  Class (*), Intent (Out) :: ct
  ct = numd (5, mold=ct)
End Subroutine opscanc

我该如何解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-20 03:18:59

在调用mold=ct子例程中对numd的调用中的第二个实际参数( opscanc )有一个声明的类型,它是无限多态的。根据特定过程的接口示例,泛型接口中的任何特定过程都没有第二个虚拟参数的类型是无限多态的。

无限多态实际参数与具有某些声明类型的虚拟参数不兼容,因此没有匹配的特定过程可调用。

(这里比较的方向很重要-具有某种声明类型的实际参数与无限多态的虚拟参数兼容,因此默认的整数字面常量5可以与第一个具有无限多态的虚拟参数相关联。)

您需要提供这样一个匹配的特定过程,或者在opscanc中使用SELECT类型构造来通过声明的类型(即其动态类型(或其动态类型的父类型)访问ct指定的对象。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37336772

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档