Прежде чем я задам свой вопрос, я хочу сказать, что понимаю, что есть некоторые «похожие» вопросы, но ничего (что я могу найти), что конкретно отвечает на мой вопрос, так что вот.
Мне интересно, возможно ли следующее. Допустим, я создаю new
экземпляр класса, например:
MyClass* classInstance = new MyClass();
Мне интересно, можно ли сохранить необработанный адрес памяти, скажем, в примитивном типе, таком как int. Затем где-то в ничейной зоне С++, где у меня нет указателя на classInstance
, я могу сделать что-то вроде этого:
MyClass* myClassInstanceSomewhereInMemory = (MyClass*)0x12345678;
myClassInstanceSomewhereInMemory->workPlzKThx(); //Yay, it works!
В случае, если это возможно, существуют ли какие-либо риски? Существуют ли какие-либо значительные накладные расходы для такой вещи? Я понимаю, что это довольно плохой дизайн, но, к сожалению, здесь я отдан на милость третьей стороне. Поэтому, пожалуйста, не ругайте меня за это, а накажите их а>. :)
Объяснение этого безумия
Итак, просто чтобы объяснить немного больше, почему я должен делать что-то настолько глупое, как это. Я переношу box2D в собственное расширение AIR, и, как я упоминал ранее, я нахожусь во власти среды выполнения AIR. То, как он обрабатывает связь между нативной стороной и стороной Actionscript,... запутано, и, кроме того, существует множество нелепых правил для этой ассоциации.
Одно такое правило создает настоящую проблему для таких ситуаций, как b2World->createBody()
, которое возвращает указатель на тип b2Body
(у которого есть закрытый конструктор). Во время этой ассоциации я не могу одновременно создать контекст, чтобы связать с ним новый указатель b2Body
, потому что во время этого вызова я застрял в контексте b2World
. Поэтому вместо того, чтобы собирать кучу грязных хаков в классах, таких как b2World
и b2Body
, мне интересно, могу ли я просто использовать примитивный тип, такой как int, для хранения и возврата адреса памяти нового b2Body
.
Я не могу вернуть указатель или структуру, набранную из C++, обратно на сторону ActionScript. Я могу ассоциироваться только с контекстами... но я могу возвращать примитивные типы.