gpt4 book ai didi

struct - 如何在 WinRT 组件 C++/CX 中通过引用传递结构

转载 作者:行者123 更新时间:2023-12-02 06:46:46 25 4
gpt4 key购买 nike

我的 WinRT 组件中有以下内容:

public value struct WinRTStruct
{
int x;
int y;
};

public ref class WinRTComponent sealed
{
public:
WinRTComponent();
int TestPointerParam(WinRTStruct * wintRTStruct);
};

int WinRTComponent::TestPointerParam(WinRTStruct * wintRTStruct)
{
wintRTStruct->y = wintRTStruct->y + 100;
return wintRTStruct->x;
}

但是,当从 C# 调用时,方法内 winRTStruct->y 和 x 的值似乎始终为 0:

WinRTComponent comp = new WinRTComponent();
WinRTStruct winRTStruct;
winRTStruct.x = 100;
winRTStruct.y = 200;
comp.TestPointerParam(out winRTStruct);
textBlock8.Text = winRTStruct.y.ToString();

通过引用传递结构以便在用 C++/CX 编写的 WinRTComponent 方法内进行更新的正确方法是什么?

最佳答案

您不能通过引用传递结构。 winrt 中的所有值类型(包括结构体)都是按值传递的。 Winrt 结构预计相对较小 - 它们旨在用于保存 Point 和 Rect 等内容。

在您的情况下,您已指示该结构是一个“out”参数 - “out”参数是只写的,其内容在输入时被忽略,并在返回时被复制出来。如果您希望结构能够输入和输出,请将其分成两个参数 - 一个“输入”参数和另一个“输出”参数(WinRT 中不允许输入/输出参数,因为它们不会按照您期望的方式投影到 JS他们来投影)。

关于struct - 如何在 WinRT 组件 C++/CX 中通过引用传递结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10584221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com