使用英特尔Visual Fortran XE 2013(启用2003语法)和Visual Studio 2012
我有一个派生类型,可分配数组作为组件 . 当我尝试分配数组或将可分配数组设置为等于数组时,它似乎不起作用 . 没有错误,但似乎没有值 .
下面是一个应该说明问题的例子 .
Type myType
integer :: var1, var2
real*8,dimension(:), allocatable :: listOfReals
integer, dimension(:), allocatable :: listOfInts
end Type myType
function setTheValues(someParams) result(typeA)
type(params_T), intent(in) :: someParams
type(myType_T) :: typeA
type(lists_t) :: lists
typeA%var1 = 1
typeA%var2 = 2
!where getList is a function that returns an
!object with an array of real numbers and an array of ints
lists = getLists(someParams)
typeA%listOfReals = lists%reals
typeA%listOfInts = lists%ints
end function setTheValues
这不起作用 . 也不会:
function setTheValues(someParams) result(typeA)
type(params_T), intent(in) :: someParams
type(myType_T) :: typeA
type(lists_t) :: lists
typeA%var1 = 1
typeA%var2 = 2
allocate(typeA%listOfReals(12))
allocate(typeA%listOfInts(12))
!where getList is a function that returns an
!derivedtype with an array of real numbers and an array of ints both of size 12
lists = getLists(someParams)
typeA%listOfReals = lists%reals
typeA%listOfInts = lists%ints
end function setTheValues
我要么得到的东西说 Value 不存在,它不会显示任何值,或者它给了我一个数组,其中看起来是带有错误数据的巨大随机索引值 .
任何帮助将不胜感激 .
EDIT :我在代码的其他部分做了类似的事情,他们似乎工作正常,即使调试器似乎仍然在显示正确的值时出现问题 .
1 回答