我有一个返回const std::vector
的类方法:
class TriangleMesh
{
public:
const std::vector<Vec3i>& indices() const { return m_indices; };
private:
std::vector<Vec3i> m_indices;
};
我正在通过另一个结构调用上述方法并执行swap
操作:
struct Contour3D {
std::vector<Vec3i> faces3;
// ...
Contour3D(TriangleMesh &&trmesh);
};
Contour3D::Contour3D(TriangleMesh &&trmesh)
{
faces3.swap(trmesh.indices()); // => error: binding value of type 'const vector<...>' to reference to type 'vector<...>' drops 'const' qualifier
}
但是我在swap
语句中收到此错误:
错误:将类型为'const vector <...>'的绑定值引用为类型为'vector <...>'的引用会丢弃'const'限定符
我不知道如何避免上述错误。
一个选择是通过使用循环来避免swap
。到目前为止,我想出了这个循环,但是我感觉好像缺少了一些东西。我在这里缺少的东西:
Contour3D::Contour3D(TriangleMesh &&trmesh)
{
faces3.reserve(trmesh.indices().size());
std::copy(trmesh.indices().begin(), trmesh.indices().end(),
std::back_inserter(faces3));
}
答案 0 :(得分:0)
由于@Yksisarvinen,此语句可以正常工作:
faces3 = trmesh.indices();