C++ DOUBLE* 返回然后重置

标签 c++ windows

我有以下功能:

私有(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/

相关文章:

c++ - 如果映射包含指针,如何清除映射中的内存?

windows - 使用 Windows 搜索以 jsp 结尾的文件

c - 链接到 c 中的 glew

python - 从 subprocess.Popen 异步读取标准输出

c - 按名称获取 C 中的进程 ID

c++ - CLR中 native 堆的内存管理

c++ - boost 随机生成器返回相同的值

c++ - 是否有平面未排序的 map /集合实现?

c++ - 函数模板

windows - 为什么 Windows 需要 WinSXS 和卷快照服务?