C++ “的反向操作是什么?”;myType&;var=*(myType*)addrVar&引用;(c+;+;)

C++ “的反向操作是什么?”;myType&;var=*(myType*)addrVar&引用;(c+;+;),c++,pointers,reference,C++,Pointers,Reference,在我没有编写的代码中,我不得不使用OpenCV(但它可以是任何东西),我遇到了如下情况: void foo (long addrImage){ [...] Mat& image = *(Mat*)addrImage; [...] } 我想做相反的操作:基于Mat&创建一个地址,但我不确定我是否完全理解使用的技巧 行是什么?long addrImage=(long)和imagelong addrImage=(long)和image技巧?任何原因Mat*p=&image不起作用吗?

在我没有编写的代码中,我不得不使用OpenCV(但它可以是任何东西),我遇到了如下情况:

void foo (long addrImage){
[...]
   Mat& image  = *(Mat*)addrImage;
[...]
}
我想做相反的操作:基于
Mat&
创建一个地址,但我不确定我是否完全理解使用的技巧


行是什么?

long addrImage=(long)和image

long addrImage=(long)和image

技巧?任何原因
Mat*p=&image
不起作用吗?long addrImage=(long)&image反正这是个糟糕的代码。将
long
强制转换为指针是未定义的行为。@πάνταῥεῖ 我以为它是实现定义的?addrImage是
长的
(数字)。然后它被转换到
Mat*
指针中(这意味着相同的数字被用作地址),然后它被
*
解引用到
Mat
实例本身中。其中,引用
Mat&
是在临时局部变量中创建的(用于简单访问该
Mat
实例)@πάνταῥεῖ: Android+JNI库中充满了这种长PTR(以及所有其他的邪恶)。我认为JNI的创建者有意地这样做,所有关于C++的好东西都在接口层上丢失了,使它完全是地狱(至少对于我来说是地狱),所以人们宁愿坚持纯java。任何原因
Mat*p=&image
不起作用吗?long addrImage=(long)&image反正这是个糟糕的代码。将
long
强制转换为指针是未定义的行为。@πάνταῥεῖ 我以为它是实现定义的?addrImage是
长的
(数字)。然后它被转换到
Mat*
指针中(这意味着相同的数字被用作地址),然后它被
*
解引用到
Mat
实例本身中。其中,引用
Mat&
是在临时局部变量中创建的(用于简单访问该
Mat
实例)@πάνταῥεῖ: Android+JNI库中充满了这种长PTR(以及所有其他的邪恶)。我认为JNI的创建者有意地这样做,所有关于C++的好东西都在接口级别上丢失了,使它完全是地狱(至少对于我来说是地狱),所以人们宁愿坚持纯java。