在我问我的问题之前,我想说我意识到有一些“类似”的问题,但没有(我能找到)专门回答我的问题,所以就这样吧。
我想知道以下是否可能。假设我创建了new
一个类的实例,如下所示:
MyClass* classInstance = new MyClass();
我想知道是否可以将原始内存地址存储在像 int 这样的原始类型中。然后,在 C++ no-mans-land 的某个地方,我没有指向 的指针classInstance
,我可以执行以下操作:
MyClass* myClassInstanceSomewhereInMemory = (MyClass*)0x12345678;
myClassInstanceSomewhereInMemory->workPlzKThx(); //Yay, it works!
如果有可能,是否有任何风险?这样的事情是否有任何重大的开销成本?我意识到这个非常糟糕的设计,但不幸的是我在这里受到第三方的摆布。所以请不要为此责备我,但请随意责备他们。:)
对这种疯狂的解释
所以只是为了进一步解释为什么我必须做这样愚蠢的事情。我正在将 box2D 移植到 AIR 本机扩展,正如我之前提到的,我受制于 AIR 运行时。它处理本机端和 Actionscript 端之间关联的方式是......搞砸了,而且还有很多荒谬的规则来进行这种关联。
一个这样的规则对于像这样的情况来说是一个真正的问题b2World->createBody()
,它返回一个指向一个b2Body
类型(它有一个私有构造函数)的指针。在此关联期间,我无法同时创建一个上下文以将新b2Body
指针与其关联,因为在此调用期间,我被困在b2World
. b2World
因此,与其在and之类的类中将一堆肮脏的 hack 一起拍打b2Body
,我想知道我是否可以只使用像 int 这样的原始类型来存储和返回 new 的内存地址b2Body
。
我无法将从 C++ 键入的指针或结构返回到 Actionscript 端。我只能与上下文相关联......但我可以返回原始类型。