ネイティブコードenum
からマネージコードenum
に同じenum
の値を含む(C++/CLIで)正しいキャスト方法は何ですか? C++/CLIで、例えば(int)
のようなキャストのC#方法を使用することとの違いはありますか?C++/CLI:管理されていない列挙型から管理された列挙型へのキャスト
25
A
答えて
37
は
enum shape_type_e
{
stUNHANDLED = 0, //!< Unhandled shape data.
stPOINT = 1 //!< Point data.
...
};
であり、あなたのマネージコードは、あなたが、私はいつもstatic_cast
を使用
shape_type_e nativeST = stPOINT;
ShapeType managedST = static_cast<ShapeType>(nativeST);
Debug.Assert(managedST == ShapeType::Point);
を使用してネイティブに管理するからキャストすることができます
public enum class ShapeType
{
Unhandled = 0,
Point = 1,
...
};
ですキャスティングのC#の方法ではありません。
1
です。たとえば、基礎となるタイプのushortを持つCLI enumを使用している場合、257のvallueを保持することはできません。デフォルトでは、CLI enumはintに基づいています。列挙型のネイティブC++コードで、符号なし32ビットint/64ビットintを基になる型として使用する場合は、CLI enumの基数をUInt32 longまたはulongに切り替えます。 、あなたのネイティブコードを仮定し
+2
両方の列挙型がint型であるため、この問題は発生しません。しかし、この場合、どのタイプのキャストを使用すべきですか?それはconst_cast、static_cast、dynamic_cast、reinterpret_cast、safe_cast、またはちょうどC#キャスト(例は(int))であるべきですか? – Lopper
関連する問題
- 1. 列挙型の列挙型の列挙型へのアクセス
- 2. null可能な列挙型へのキャスト
- 3. System.Drawing.Colorが列挙型でない理由
- 4. アセンブリの構成間で列挙型を管理する
- 5. DBの列挙型または列挙型の列挙型
- 6. C++ 11型から列挙型マッピングへ?
- 7. kivy言語で列挙型が処理されませんか?
- 8. C#列挙型とキャスト
- 9. 格納された列挙型の条件付き列挙型スイッチ
- 10. スウィフトネストされた列挙型共通タイプ
- 11. 列挙型にバインドされたドロップダウンリスト
- 12. は、ネストされた列挙型
- 13. 列挙型の中の列挙型
- 14. 列挙型の列挙型の作成
- 15. 複数のアプリケーション層にわたる多くの列挙型の管理
- 16. 列挙型内の列挙型
- 17. EF5外部型の問題への列挙型の列挙
- 18. Azure関数から返されたJSONの列挙型として列挙型をシリアル化
- 19. のPostgreSQL:これは、列挙型の定義で列挙型
- 20. 列挙型ループでのマルチ処理
- 21. 列挙型からリンクテーブルへの変更
- 22. 列挙型がint配列に設定されている
- 23. Javaで列挙型を理解する
- 24. 管理されたコードでのMarshalAsクエリ管理されていない
- 25. Cの型保証された列挙型?
- 26. 列挙型データ型
- 27. int型/列挙型
- 28. 多型列挙型
- 29. 列挙型の
- 30. F#ライブラリの列挙型がリンクされたプログラムで表示されない
上記のコードから、あなたはネイティブから管理された列挙型にキャストしていると思います。それ以外の方法で管理対象からネイティブに移行するのはどうですか? – Lopper
スタティックキャストは、両方の方法であなたの友人です... nativeST = static_cast(managedST); –
mcdave
ありがとうmcdave! :) – Lopper