我有以下功能:
私有(private):
bool _bFixation;
bool _bBlink;
DOUBLE _X;
DOUBLE _Y;
int CMYCLASS::getData(VARIANT_BOOL* uEvent1, VARIANT_BOOL* uEvent2, DOUBLE* uX, DOUBLE* uY, LONG* pVal)
{
if (_bEvent1)
{
*uEvent1=VARIANT_TRUE;
}
else
{
*uEvent1=VARIANT_FALSE;
}
if (_bEvent2)
{
*uEvent2=VARIANT_TRUE;
}
else
{
*uEvent2=VARIANT_FALSE;
}
uX=&_X;
uY=&_Y;
//reset
_bEvent1=false;
_bEvent2=false;
_X=0;
_Y=0;
return 0;
}
我的问题是,如果我在函数末尾重置变量 _X,它也会更改变量 uX。
有人能告诉我如何正确地做到这一点吗?我是否必须复制 _X 而不是传递引用?
谢谢!
最佳答案
是的,您已经获得了一个指针作为参数,并且您正在将指针指向的位置设置为您随后重新分配的另一个变量的地址。
尝试这样的事情:
*uX = _X;
这会将 _X
的值复制到 uX
指向的内存中。
然后您可以将 _X
重新分配给您想要的任何值,它不会更改 uX
指向的值。
关于C++ DOUBLE* 返回然后重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21916420/