你的代码经过竹叶的修改,可以正确运行,并没有发现覆盖问题。 输出为: curve-1curve-2 此外,你后来提供的截图太小了。论坛允许2MB的图片附件,应该够用。 |
剔除ivf的独家特性后,gfortran编译无问题,也没有发现lz覆盖的问题 至于多次初始化,势必先得判断allocated,不能上手就allocate 实在想不通为啥非要在Fortran上折腾OOP功能,关键很多轮子得自己造,效率还不一定高 |
首先感谢! 我明日再试一遍! |
你这个根本就不能编译通过,勿论其他。 [Fortran] 纯文本查看 复制代码 module curveModule type point !定义一个点 integer x,y,z end type type curve !定义一个曲线,有很多点构成 type(point),dimension(:),allocatable::points character(:),allocatable::name contains procedure,pass,public::initCurve end type contains subroutine initCurve(self,psNum,ps,theName) class(curve)::self integer::psNum type(point),dimension(psNum)::ps character(len=*)::theName allocate(self.points(psNum)) self.points=ps self.name=theName end subroutine end module module figureModule type figure !定义图表,有几条曲线构成 type(curve)::c1,c2,c3 contains procedure,pass::init end type contains subroutine init(self,inputFile) character(:),allocatable::inputFile class(figure)::self type(point)::p1=point(1,2,3),p2=point(2,3,4),p3=point(3,4,5),p4=point(4,5,6) type(point)::ps1(4),ps2(4) ps1=(\p1,p2,p3,p4\) ps2=(\p2,p3,p4,p1\) self.c1.init(size(ps1),ps1,'curve-1') self.c2.init(size(ps2),ps2,'curve-2') !若是只有才c1一个变量可执行,两个就不可,会覆盖第一个 write(*,*) self.c1.name,self.c2.name end subroutine end module program main type(figure)::f call f.init('a.txt') !读入一个数据文件,将数据文件格式化的存成一个图表对象 end program |
捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )
GMT+8, 2024-12-25 21:46