Установить соответствие между управляемым объектом и собственным указателем в c ++ / cli? - PullRequest
4 голосов
/ 05 августа 2011

У меня есть класс c ++ / cli, в котором я хотел бы поддерживать отображение между управляемой строкой и собственным указателем.

Использование std :: map выдает компилятору предупреждение C4368 (невозможно определить 'member' как член управляемого типа ': смешанные типы не поддерживаются).

Использование словаря дает C3225: аргумент универсального типа для 'TValue' не может быть 'собственным указателем', это должен быть тип значения или дескриптор ссылочного типа

Как мне добиться этого отображения?

Ответы [ 2 ]

6 голосов
/ 05 августа 2011

Просто создайте тип значения, который содержит собственный указатель, т.е.

value struct TValue { native* ptr; };

Dictionary<String^, TValue> d;
3 голосов
/ 05 августа 2011

Dictionary<String^, IntPtr> - ваша лучшая ставка.К сожалению, IntPtr концептуально эквивалентен void*, поэтому вы теряете информацию о типе, и вам придется преобразовывать значение в реальный тип указателя каждый раз, когда вы захотите его использовать.

...