jvm openvr bindingを最後のopenvrバージョン1.0.5に更新しましたが、私は1つ確かめていません。 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
でしょうか?
しかしこれはVROverlayIntersectionMaskPrimitive_Data_t
は抽象クラスである私の実装、次のとおりです。
abstract class VROverlayIntersectionMaskPrimitive_Data_t : Structure {
constructor() : super()
constructor(peer: Pointer) : super(peer)
}
。
マイfirst guessが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)
に変換ということです私の推論が正しい表示されていますか?
あなたの言葉は非常に混乱しています... whats that about 'sizeof'-あなたは実際にこのキーワードがある種のデータ型だと思いますか?まあ、それはありません。そのC/C++ **演算子**は、 'size_t'型の結果をもたらします - 特定のポインタのサイズを取得しない限り、ポインタは関係ありません。実際にはポインタも可能なので実際には良い考えですあなたのアーキテクチャに応じて異なるサイズのもの – specializt
申し訳ありませんが、私の間違いは、私は変更しました、私は希望が今明確です – elect