2011-08-04 4 views
4

나는 관리되는 문자열과 네이티브 포인터 사이의 매핑을 유지하고자하는 C++/cli 클래스를 사용하고 있습니다.C++/cli에서 관리 객체와 네이티브 포인터 간의 매핑을 설정 하시겠습니까?

std :: map을 사용하면 컴파일러 경고 C4368이 제공됩니다 (관리되는 '유형'의 구성원으로 '구성원'을 정의 할 수 없음 : 혼합 유형은 지원되지 않음). 사전을 사용하여

는 C3225을 제공합니다 : 'TValue'는 참조 형식 내가이 매핑을 달성 할 수있는 방법

에 값 유형이나 핸들해야한다 '네이티브 포인터'가 될 수 없습니다에 대한 제네릭 형식 인수를?

답변

5

그냥 네이티브 포인터를 보유하고 값 유형, 즉

value struct TValue { native* ptr; }; 

Dictionary<String^, TValue> d; 
+0

완벽하게! 고마워 .... –

+0

+1, 이것은 나에게 발생하지 않았다. – ildjarn

3

Dictionary<String^, IntPtr>이 최선의 방법입니다. 불행히도 IntPtr은 개념적으로 void*과 같으므로 형식 정보를 잃어 버리고 사용하려고 할 때마다 실제 포인터 형식으로 값을 변환해야합니다.

관련 문제