Fortran Coder

查看: 20515|回复: 23
打印 上一主题 下一主题

[派生类型] 参数化类型如何绑定

[复制链接]

79

帖子

17

主题

0

精华

专家

齊天大聖

F 币
433 元
贡献
266 点
跳转到指定楼层
楼主
发表于 2018-11-8 13:23:13 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 lookbook 于 2018-11-8 13:23 编辑

各位大佬好,代码如下:

      module m_a
         implicit none

         type :: bar(p, q)
            integer, kind :: p=4
            integer, len  :: q=10
            real(kind=p),dimension(q) :: x
         contains
            procedure,pass(this) :: barsub
         end type bar

      contains
         subroutine barsub(this)
            class(bar), intent(in) :: this
            write (*,*) this%x
         end subroutine barsub
      end module


gfortran编译错误如下:
       procedure,pass :: barsub
               1
Error: Argument ‘this’ of ‘barsub’ with PASS(this) at (1) must be of the derived-type ‘bar’

小白还望大佬们赐教,谢谢!



分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
24#
发表于 2018-11-19 09:22:46 | 只看该作者
lookbook 发表于 2018-11-18 16:30
学习了,但是离开IDE是不是就不行了?

在编程的世界里,没有什么东西是离开IDE就不行的

178

帖子

15

主题

0

精华

大宗师

F 币
4973 元
贡献
1152 点
23#
发表于 2018-11-19 08:31:25 | 只看该作者
lookbook 发表于 2018-11-18 16:36
我都试过,并不可以。

啊,那真是奇怪,从编译报错看就是这个问题啊……

178

帖子

15

主题

0

精华

大宗师

F 币
4973 元
贡献
1152 点
22#
发表于 2018-11-19 08:30:59 | 只看该作者
lookbook 发表于 2018-11-18 16:30
嗯,是个好办法。
不过我现在不太让shell完成太多东西了,程序能自己解决的就尽可能不用shell(大概是我 ...

像我这么马虎的人,真正实现封装可以避免因为马虎犯很多错啊……

79

帖子

17

主题

0

精华

专家

齊天大聖

F 币
433 元
贡献
266 点
21#
 楼主| 发表于 2018-11-18 16:36:42 | 只看该作者
liudy02 发表于 2018-11-16 22:31
哈哈,版主也犯错了啊
把后面两个进程里对哑元定义的关键字TYPE换成CLASS应该就好了 ...

我都试过,并不可以。

79

帖子

17

主题

0

精华

专家

齊天大聖

F 币
433 元
贡献
266 点
20#
 楼主| 发表于 2018-11-18 16:35:56 | 只看该作者
weixing1531 发表于 2018-11-17 11:05
改变精度必然要重新编译代码
这种花哨功能不实用

嗯,改变精度必须要全部重新编译,这个问题给我的印象很深刻。

在一个程序里面,确实有可能性需要用到不同精度的同一个结构的自定义类型(虽然我都是统一精度的)。
这个时候参数化类型就能很方便的解决这个问题了。

79

帖子

17

主题

0

精华

专家

齊天大聖

F 币
433 元
贡献
266 点
19#
 楼主| 发表于 2018-11-18 16:30:55 | 只看该作者
vvt 发表于 2018-11-17 09:36
配合预处理,确实能实现更多语法不方便做的事情。

比如 Qt 的 moc,扩展了 C++ 的功能 ...

学习了,但是离开IDE是不是就不行了?

79

帖子

17

主题

0

精华

专家

齊天大聖

F 币
433 元
贡献
266 点
18#
 楼主| 发表于 2018-11-18 16:30:01 | 只看该作者
liudy02 发表于 2018-11-16 22:42
顺便说句,我终于现实解决了之前说的想定义不同kind但是功能几乎一样的类型,
甚至包括不同的数据类型,例 ...

嗯,是个好办法。
不过我现在不太让shell完成太多东西了,程序能自己解决的就尽可能不用shell(大概是我变懒了)。
你是不是对C++很熟啊,感觉使用Private属性还是很有用处的,我自己写的时候不太注意这个。

127

帖子

35

主题

1

精华

大师

F 币
1153 元
贡献
592 点
17#
发表于 2018-11-17 11:05:19 | 只看该作者
改变精度必然要重新编译代码
这种花哨功能不实用

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
16#
发表于 2018-11-17 09:36:10 | 只看该作者
配合预处理,确实能实现更多语法不方便做的事情。

比如 Qt 的 moc,扩展了 C++ 的功能
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-7 00:13

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表