C++ 交换操作错误:绑定值类型为';常量向量<&燃气轮机';引用类型';向量<&燃气轮机';下降';常数';合格者

C++ 交换操作错误:绑定值类型为';常量向量<&燃气轮机';引用类型';向量<&燃气轮机';下降';常数';合格者,c++,stdvector,C++,Stdvector,我有一个类方法,它返回const std::vector: 类三角网格 { 公众: const std::vector&index()const{return m_index;}; 私人: std::向量m_指数; }; 我正在通过另一个结构调用上述方法,并执行swap操作: struct-Contour3D{ std::向量面3; // ... 轮廓3D(三角网格和三角网格); }; 轮廓3D::轮廓3D(三角网格和trmesh) { faces3.swap(trmesh.indexs())

我有一个类方法,它返回
const std::vector

类三角网格
{
公众:
const std::vector&index()const{return m_index;};
私人:
std::向量m_指数;
};
我正在通过另一个结构调用上述方法,并执行
swap
操作:

struct-Contour3D{
std::向量面3;
// ...
轮廓3D(三角网格和三角网格);
};
轮廓3D::轮廓3D(三角网格和trmesh)
{
faces3.swap(trmesh.indexs());//=>错误:将“const vector”类型的值绑定到对“vector”类型的引用会删除“const”限定符
}
但我在
swap
语句中收到此错误:

错误:将“const vector”类型的值绑定到对“vector”类型的引用会删除“const”限定符

我不知道如何避免上述错误

一种选择 一种选择是通过使用循环来避免
交换
。到目前为止,我想出了这个循环,但我觉得我错过了一些东西。我缺少的是:

Contour3D::Contour3D(三角网格和trmesh)
{
面3.保留(trmesh.index().size());
复制(trmesh.index().begin(),trmesh.index().end(),
标准:背面插入器(面3);
}

多亏@Yksisarvinen,这句话很好用:

faces3=trmesh.index();

您不能将
const
包含到
swap()
操作中,该操作将尝试对其进行变异。这就是编译器抱怨rightfulls的原因。@πάνταῥεῖ 循环是否可以替代
swap
faces3=trmesh.index()有什么问题吗?由于这是构造函数,
faces3
可能还是空的。或者更好的是,使用So,大概你想利用
tremesh
即将过期的事实,只是劫持(移动)它的向量而不是复制?