jvm openvr binding을 마지막으로 openvr 버전 1.0.5로 업데이트했지만 한 가지 확실하지 않습니다. cpp에있는jna에서 구조체 sizeof()를 공용 형식으로 구현하는 방법
이 가상 SetOverlayIntersectionMask
기능으로 IVROverlay
클래스가 :
virtual EVROverlayError SetOverlayIntersectionMask(
VROverlayHandle_t ulOverlayHandle,
VROverlayIntersectionMaskPrimitive_t *pMaskPrimitives,
uint32_t unNumMaskPrimitives,
uint32_t unPrimitiveSize = sizeof(VROverlayIntersectionMaskPrimitive_t)) = 0;
내 의심은 마지막 인수를 간주한다.
VROverlayIntersectionMaskPrimitive_t
:
typedef union
{
IntersectionMaskRectangle_t m_Rectangle;
IntersectionMaskCircle_t m_Circle;
} VROverlayIntersectionMaskPrimitive_Data_t;
오른쪽 위의 두 개의 클래스가 구현되는
, IntersectionMaskRectangle_t
및 IntersectionMaskCircle_t
:
struct VROverlayIntersectionMaskPrimitive_t
{
EVROverlayIntersectionMaskPrimitiveType m_nPrimitiveType;
VROverlayIntersectionMaskPrimitive_Data_t m_Primitive;
};
는 VROverlayIntersectionMaskPrimitive_Data_t
라는 열거 형과 연합 형 변수 구조체이며
이제 enum은 Int
으로 변환되지만 후자는? 포인터이어야하므로 Pointer.SIZE
이 될 것 같습니까?
abstract class VROverlayIntersectionMaskPrimitive_Data_t : Structure {
constructor() : super()
constructor(peer: Pointer) : super(peer)
}
가 two other classes에 의해 다시 구현 :
그러나이 VROverlayIntersectionMaskPrimitive_Data_t
는 추상 클래스 내 구현이다.
는 sizeof(VROverlayIntersectionMaskPrimitive_Data_t)
가 Int + Pointer.SIZE
@JvmOverloads fun setOverlayIntersectionMask(
ulOverlayHandle: VROverlayHandle_t,
pMaskPrimitives: VROverlayIntersectionMaskPrimitive_t.ByReference,
unNumMaskPrimitives: Int,
unPrimitiveSize: Int = Int.BYTES + Pointer.SIZE)
로 변환 내 추론이 정확 나타 납니까 있다는 first guess를 내?
당신의 말은 매우 혼란 스럽습니다 ... whats that about 'sizeof'- 당신은 실제로이 키워드가 어떤 종류의 데이터 유형이라고 생각합니까 ?? 글쎄, 그렇지 않아. 그것의 C/C++ ** 연산자 ** 그리고'size_t' 타입의 결과를 얻을 것입니다 - 당신이 특정 포인터의 크기를 검색하기를 원하지 않는다면 ... 포인터도 포함될 수 있기 때문에 사실 좋은 생각입니다. 귀하의 아키텍처에 따라 다른 크기의, – specializt
죄송합니다, 내 실수, 수정, 희망이 지금은 분명하다 – elect