我有以下function:
私人的:
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; }
我的问题是,如果我重置variables_X在函数的结尾,它也改变variablesuX。
有人可以告诉我如何正确地做到这一点? 我是否必须复制_X而不是传递参考?
谢谢!
是的,你已经得到了一个指针作为参数,并且你正在设置指针指向另一个变量的地址,然后你重新分配的地址。
尝试像这样:
*uX = _X;
这会将_X
的值复制到uX
指向的内存中。
然后,您可以重新分配_X
成为您想要的任何内容,并且不会更改由uX
指向的值。