Пишу обертку для дотНЕТ, нужно обернуть неуправляемую структуру, чтобы была доступна в НЕТе.
Принци прост:
Управляемый класс, в нем указатель на структуру.
Есть несколько неуправляемых функций для обработки структуры — создаю соответствующие члены класса, вызывающие эти фунции. Передаю указатель, хранящийся в классе как параметр.
Сложность в том, что все созданные экземпляры этой структуры заносятся в неуправляемый список (точнее указатели на них), и есть неуправляемая функция, которая обрабатывает список и возвращает указатель на один из экземпляров структуры.
Вот и думаю, как по указателю найти класс-обертку... Решил создать в классе статичную коллекцию, занести туда ссылки на все классы, в качестве ключа использовать адрес структуры
key = (int)*stuct
А потом по этому ключу искать в коллекции класс..
Но почему-то полученный от фунции указатель не соответствует ни одному ключу...
Как правильно получить адрес, на который ссылается указатель?
Или, может, есть более красивый способ решить такую задачку?
Здравствуйте, ImMaxim, Вы писали:
[]
IM>Вот и думаю, как по указателю найти класс-обертку... Решил создать в классе статичную коллекцию, занести туда ссылки на все классы, в качестве ключа использовать адрес структуры
IM>IM>key = (int)*stuct
IM>
IM>А потом по этому ключу искать в коллекции класс..
IM>Но почему-то полученный от фунции указатель не соответствует ни одному ключу...
IM>Как правильно получить адрес, на который ссылается указатель?
Я не понял из Вашего кода что-такое stuct?
Но для того, чтобы приведенный Вами код делал то, что Вы описали словами stuct должен быть указателем на указатель, Вы уверены, что в действительности это так ?
если stuct — "указатель, хранящийся в классе как параметр", то "условно"-правильный фрагмент:
key = (int)stuct
... << RSDN@Home 1.1.4 stable rev. 510>>