在我们的项目中,我们有一个在 C# 中定义的 3 维向量 (x,y,z) 的只读结构,如下所示:
public readonly struct Vec3
{
public readonly double X, Y, Z;
...
}
我们想在 C++/CLI 代码中调用以下内容:
auto myVector = Vec3(1, 2, 3);
coordinates.push_back(myVector.X); //"coordinates" is a std::vector<double>
但是这样做会导致以下错误:
C3893:只允许在类 ....Vec3 的实例构造函数中使用 initonly 数据成员的左值。
我们相当肯定这是因为 push_back() 方法具有以下签名:
void push_back(const _Ty& _Val)
但是我们还没有弄清楚如何将只读字段传递给 push_back。我们尝试了各种演员表,到目前为止唯一有效的是执行以下操作:
double x = vert.X;
coords.push_back(x);
关于如何“正确”做到这一点的任何想法?谢谢您的帮助!