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