如果我有两个这样的结构:
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 可能会用红色波浪线和关于“公共(public)非数据成员”的工具提示来提示 operator A()
,但您可以忽略它,代码将编译。 internal
关键字表示“C++ 中的public
但不作为元数据的一部分公开在 WinMD 中。”
关于c++ - 分配 native C++ 结构的 CX 公共(public)值结构内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44837127/