分配本机C++结构的 CX 公共值结构内容

Assign CX public value struct contents of native C++ struct

本文关键字:结构 CX 本机 C++ 分配      更新时间:2023-10-16

如果我有两个这样的结构:

struct A {
    float a;
    float b;
    float c;
    float d;
}
public value struct B {
    float a;
    float b;
    float c;
    float d;
}

从 A 转换为 B 的最佳方法是什么(反之亦然(。我可以执行以下操作:B struct_b = static_cast<B>(A{1,2,3,4})

支持的方法是通过转换运算符:

struct A;
public value struct B {
    float a;
    float b;
    float c;
    float d;
internal:
    operator A();
};
struct A {
    float a;
    float b;
    float c;
    float d;
    operator B()
    {
        return B{ a, b, c, d };
    }
};
B::operator A()
{
    return A{ a, b, c, d };
}

请注意,Intellisense 可能会抱怨带有红色波浪线和工具提示的operator A()"公共非数据成员",但您可以忽略它,代码将编译。internal关键字表示"public C++内部,但不作为 WinMD 元数据的一部分公开"。