C++에서는 S의 배열을 할당합니다. Fortran에서이 배열의 요소에 액세스하려고합니다. 어떻게해야합니까?Fortran에서 C++ 구조체의 배열에 액세스 하시겠습니까?
C++ :
struct S {double a; double b;};
S *arrayOfS;
arrayOfS = (S *)new S[123]; // allocate
포트란 2003
USE ISO_C_Binding
TYPE, BIND(C) :: SFortran
REAL(c_double) :: a,b
END TYPE SFortran
S 및 SFortran 이제 상호 운용이 가능해야하지만, 나는 또한 C++에서 선언 된 배열의 요소에 액세스 할 수있는 방법이 필요합니다. Fortran에서 SC (5) % a를 C++의 arrayOfS [4] .a에 대응시키고 싶습니다. 이 액세스 권한을 가진 Fortran 어레이 SC에 적절한 값을 선언하고 설정하려면 어떻게합니까?
C++에서'new'의 리턴 값을 캐스트 할 필요가 없습니다. 솔직히 짜증나는 동안 이니셜 라이저에는 선언문을 넣는 것이 관례입니다 :'S * arrayOfS = new S [123];' – Casey
캐스트는 명확하게하기위한 것입니다. 같은 줄과 별도의 줄은 "거룩한 전쟁"문제입니다. 그러나 이것은 프로덕션 코드가 아닙니다. 질문을 명확하게하는 간단한 예입니다. – Woody20