Указатель процедуры, пропущенные объекты - PullRequest
1 голос
/ 04 мая 2011

В примере, доступном здесь , я пытаюсь определить тип, имеющий компонент указателя процедуры f. У меня также активна опция PASS, что означает, что первым аргументом f является аргумент переданного объекта.

В программе f ассоциируется с подпрограммой proc1, которая меняет компонент i на 999. Однако, если я запускаю программу, i не изменяется и вместо этого остается 123.

В чем моя ошибка?

Спасибо

Ответы [ 2 ]

2 голосов
/ 25 ноября 2012

Я не эксперт, но я думаю, что когда вы используете атрибут PASS, вы должны указать передаваемый аргумент.По крайней мере, так я это использовал.например

... pass(self) :: foo

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

Тогда способ вызова этой процедуры будет следующим: instanceOfMyType%foo(baz)

Cheers.

2 голосов
/ 04 мая 2011

Я получаю сообщение об ошибке при попытке скомпилировать этот код. Он исчезает, когда я изменяю объявление аргумента A в подпрограмме proc1 с type(derivedType) на class(derivedType).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...