Fortran Coder

标题: 一个新手村的问题 [打印本页]

作者: lookbook    时间: 2019-1-9 22:14
标题: 一个新手村的问题
问题 1:

如果有个父类里面有个member:: x(2),可以表示2维的点。

那我可不可以通过改变它的维数来进行继承,例如改成 x(3),来表示一个3维的点。

而不是教科书上所写的那样,先有 real :: x,y
再继承的时候扩充为 x,y,z

问题 2:
如果已经有一个父类了,


那有继承关系的子类能不能是该父类数据类型的数组?


例如:父类是2d的点,
子类是一堆2d的点。


在下小白,写过一点code,但远远感觉火候未到,十分力不从心,特别是继承这块,还望各位大大海涵。



作者: vvt    时间: 2019-1-9 23:12
很不幸,都不能。
作者: lookbook    时间: 2019-1-10 14:59
请问C++中是否可以实现
作者: li913    时间: 2019-1-10 20:44
1、可以用带参数的type实现,或者把x定义为动态数组;
2、子类必定包含父类的元素(例如下图中的x,y),所以子类不能是父类的数组。但子类可以含有 父类的数组。

QQ截图20190110204018.png (32.62 KB, 下载次数: 320)

QQ截图20190110204018.png

作者: lookbook    时间: 2019-1-11 15:04
li913 发表于 2019-1-10 20:44
1、可以用带参数的type实现,或者把x定义为动态数组;
2、子类必定包含父类的元素(例如下图中的x,y),所 ...

2里面的方法我想到了,但总感觉不够“美”,总觉得里面的x,y是多余的。
1里面的方法很妙啊!不过现在的gf好像对含参的type支持的不是很好。
作者: lookbook    时间: 2019-1-11 15:28
li913 发表于 2019-1-10 20:44
1、可以用带参数的type实现,或者把x定义为动态数组;
2、子类必定包含父类的元素(例如下图中的x,y),所 ...

我又想了下,感觉使用含参数的类可能会在“+,-,*,/,=“这些函数上出现问题吧。
作者: li913    时间: 2019-1-11 20:03
本帖最后由 li913 于 2019-1-11 20:08 编辑
lookbook 发表于 2019-1-11 15:28
我又想了下,感觉使用含参数的类可能会在“+,-,*,/,=“这些函数上出现问题吧。 ...

1、我感觉带参数的type不好用;2、建议使用数组指针x,由x的元素个数确定是2D还是3D;
3、type的 + - * / = 等操作,可以自己重载。参考这个帖子的回复http://bbs.fcode.cn/thread-1843-1-1.html

作者: lookbook    时间: 2019-1-12 20:39
li913 发表于 2019-1-11 20:03
1、我感觉带参数的type不好用;2、建议使用数组指针x,由x的元素个数确定是2D还是3D;
3、type的 + - * /  ...

大佬,数组指针怎么说,不太明白
作者: li913    时间: 2019-1-13 16:18
type t
real,pointer::x(:)
endtype
作者: pasuka    时间: 2019-1-20 09:11
问题1:为啥不考虑模板呢?
譬如:https://github.com/alexispaz/FortranTemplates

btw,有这么多优秀的OO编程语言,为啥非要选择Fortran呢?
新手上来就开启hard模式。。。

作者: lookbook    时间: 2019-1-20 14:25
pasuka 发表于 2019-1-20 09:11
问题1:为啥不考虑模板呢?
譬如:https://github.com/alexispaz/FortranTemplates

fortran也有模板!
666
谢谢大佬!
作者: vvt    时间: 2019-1-20 19:14
那个并不是“语法层次”的模板
而是利用“预处理”而“投机取巧”实现的,类似于模板一样的功能。
作者: pasuka    时间: 2019-1-21 09:07
lookbook 发表于 2019-1-20 14:25
fortran也有模板!
666
谢谢大佬!

我不是大佬,只是搬运工
Car, David and Michael List (2010). PyF95++: A Templating Capability for the Fortran 95/2003 Language. ACM Fortran Forum 29(1), 2-20.
http://dx.doi.org/10.1145/1753166.1753167
这个fortran模板库更好玩一点,翻版的STL
https://github.com/SCM-NV/ftl




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2