공용 프로 시저 f가 정의 된 유형 A를 처음 정의했고 A에 결합 될 수도 있다고 가정합니다. 다른 모듈에서이 유형이 B로 확장되었습니다. 그러나 유형 B를 사용할 때 f 노출 될 수 있습니다. 그건 그렇고, 나는 하위 기술을 사용하고 싶지 않아.Fortran에서 확장 정의에서 공개 프로 시저를 비공개로 설정하는 방법은 무엇입니까?
보수 :
은 (A) 형 가정 이미 정의되어 다른 모듈 B에서
module mA
type::A
...
contains
procedure::f
endtype
endmodule
, 우리는 같은 확장이 모듈
module mB
use mA
type,extends(A)::B
...
endtype
endmodule
, F 여전히 수도 사용하십시오. 그러나, 다음, 모듈 MC에서 내가 사용
type(B)::Ob
을 (선언)하고 나는 불법하고자 "() 산부인과 % f를 호출". 또는 동등하게 말해서, 나는 클래스를 확장 할 때 함수의 일부를 금지하려고합니다.
예제 코드를 보여주십시오. 항상 그렇게하십시오. 코드 그림은 긴 설명보다 항상 좋습니다. –
가능한 해결 방법은 "stop"문을 자식 클래스의 "f"메서드에 넣는 것일 수 있습니다? 또 다른 해결 방법은 상속보다 컴포지션을 사용하여 Ob % f()가 구성에 의해 표시되지 않도록하는 것입니다. – roygvib