네이티브 코드 enum
에서 관리 코드 enum
으로 캐스팅하는 올바른 방법은 무엇입니까? enum
값이 포함되어 있습니까? C++/CLI에서 예를 들어 (int)
처럼 캐스팅의 C# 방식을 사용하면 어떤 차이가 있습니까?C++/CLI : 관리되지 않는 enum에서 관리되는 enum으로 캐스팅
25
A
답변
37
enum shape_type_e
{
stUNHANDLED = 0, //!< Unhandled shape data.
stPOINT = 1 //!< Point data.
...
};
를 네이티브 코드입니다 가정하고 관리 코드가
public enum class ShapeType
{
Unhandled = 0,
Point = 1,
...
};
당신은
shape_type_e nativeST = stPOINT;
ShapeType managedST = static_cast<ShapeType>(nativeST);
Debug.Assert(managedST == ShapeType::Point);
난 항상 static_cast
를 사용하여 네이티브로 관리에서 캐스트 할 수있다, 캐스팅의 C# 방식이 아닙니다.
1
에 따라 다릅니다. 예를 들어 기본 유형이 ushort 인 CLI enum이있는 경우 257의 vallue를 보유 할 수 없습니다. 기본적으로 CLI enum은 int를 기반으로하며 대부분의 경우에 적합합니다. 기본 C++ 코드에서 부호없는 32 비트 int/64 비트 int를 기본 유형으로 사용하는 경우 enum이있는 경우 CLI enum의 기본을 UInt32, long 또는 ulong으로 전환합니다.
+2
두 enum 모두 int 유형이므로이 문제가 발생하지 않습니다. 그러나이 경우 어떤 유형의 캐스트를 사용해야합니까? 그것은 const_cast, static_cast, dynamic_cast, reinterpret_cast, safe_cast 또는 C# 캐스트 (예 : (int))일까요? – Lopper
관련 문제
- 1. 관리되지 않는 GUID를 관리되는 Guid로 변환^
- 2. 관리되는 코드에서 관리되지 않는 배열 채우기
- 3. 관리되지 않는 메모리 및 관리되는 메모리
- 4. 관리되는 코드와 관리되지 않는 코드는 무엇을 의미합니까?
- 5. 관리되는 클래스의 관리되지 않는 구조 인스턴스
- 6. 관리되지 않는 메모리를 관리되는 바이트 배열로 복사
- 7. 관리되지 않는 HWND의 자식으로 관리되는 양식
- 8. 관리되는 코드가 관리되지 않음
- 9. 관리되는 실행 파일의 관리되지 않는 lib가 관리되는 예외를 발생 시킴
- 10. 관리되는 이벤트 원본을 관리되지 않는 이벤트 싱크에 연결합니다.
- 11. 래퍼를 관리되지 않는 코드
- 12. 관리 및 관리되지 않는
- 13. 관리되는 코드에서 관리되지 않는 개체를 매개 변수로 사용하여 관리되지 않는 메서드를 효율적으로 호출
- 14. .NET에서 관리되는 DLL의 관리되지 않는 클래스는 어떻게 사용합니까?
- 15. 관리되지 않는 포인터를 사용하는 메서드에 관리되는 참조 전달
- 16. 관리되지 않는 C++ COM 및 관리되는 C++ .NET4 interop
- 17. 관리되지 않는 데이터를 관리되는 코드로 푸시하는 방법은 무엇입니까?
- 18. Monotouch : 가비지 수집기, 관리되는 개체 및 관리되지 않는 개체
- 19. C++에서 관리되는 유형과 관리되지 않는 유형 간의 변환?
- 20. 사용자 정의 관리되지 않는 형식을 관리되는 형식으로 변환하는 방법?
- 21. 관리되는 C#에서 관리되지 않는 무료 C 코드 메모리
- 22. 관리되는 + 관리되지 않는 응용 프로그램으로 인해 메모리 누수가 발생합니다.
- 23. 등록되지 않은 COM을 관리되는/관리되지 않는 interop에서 작동시키는 방법
- 24. 관리되지 않는 코드에 대한 관리되는 컨트롤 핸들 제공 - 액세스 위반
- 25. 관리되는 환경에서 관리되지 않는 스레드를 사용할 때의 단점은 무엇입니까?
- 26. .NET Framework에서 관리되지 않는 메모리를 할당하거나 사용하는 관리되는 클래스는 무엇입니까?
- 27. 형식의 배열에 대한 마샬링 (관리되는 C# -> 관리되지 않는 C++)
- 28. 관리되는 코드 또는 관리되지 않는 코드의 메모리 사용을 모니터링하는 방법
- 29. 관리되지 않는 COM 참조를 관리되는 코드에서 디버깅하는 방법?
- 30. 유니 코드 문자열을 관리되는 함수에서 관리되지 않는 함수로 전달하는 방법
위의 코드에서 네이티브에서 관리되는 enum으로 캐스팅한다고 가정합니다. 매니지드에서 네이티브로가는 다른 길은 어떨까요? – Lopper
정적 캐스팅은 두 가지 방법으로 친구가됩니다 ... nativeST = static_cast (managedST); –
mcdave
감사합니다 mcdave! :) – Lopper