2011-05-04 2 views
1

예제에서는 사용 가능한 here 예제에서 프로 시저 포인터 구성 요소 f가있는 형식을 정의하려고합니다. 또한 PASS 옵션을 활성화했습니다. 즉 f의 첫 번째 인수는 전달 된 객체 인수입니다. 프로그램에서 프로 시저 포인터, 성공한 개체

는, F는 123

내 실수 무엇, 그러나 구성 요소 내가 999을 변경 내가 프로그램을 실행하면, 내가 변화되지 않고 대신 유지 PROC1라는 서브 루틴과 연관된 ? 내가 그 코드를 컴파일 할 때

덕분에

답변

2

오류가 발생합니다. 서브 루틴 proc1에서 인수 A의 선언을 type(derivedType)에서 class(derivedType)으로 변경하면 사라집니다.

+0

어떤 컴파일러를 사용 했습니까? –

+0

@ user578832 : gfortran (4.7) – eriktous

2

저는 전문가는 아니지만 PASS 속성을 사용할 때 전달되는 인수를 지정해야한다고 생각합니다. 적어도 그것은 그것을 사용하고있는 방식입니다. 예를

...에 대한

function foo(self, baz) return(bar) 
    type(mytype), intent(in) :: self 
    real, intent(in) :: baz 
    ... 

pass(self) :: foo는이 프로 시저를 호출하는 방법은 다음과 같습니다 instanceOfMyType%foo(baz)

건배.