我有一个接受const std::vector<std::pair<float, cv::RotatedRect> >
void fn (const std::vector < std::pair < float, cv::RotatedRect > >& vec1,
std::vector < std::pair< float, cv::Rect> >& vec2) {
所以,当我想采用cv::RotatedRect
我做
cv::RotatedRect& newrotrect = vec1[cntr].second;
这显然给出了错误,说我尝试从const
成员创建引用。
我的问题是:
const
(这不是理想的)或const_cast
元素? 答案 0 :(得分:3)
你不能在没有强制转换的情况下将const引用存储在非const引用中,因为这将允许你修改对象,而const的目的是阻止你这样做。
都不是。使用
const cv::RotatedRect& newrotrect = vec1[cntr].second;
答案 1 :(得分:2)
1)您不被允许,因为向量访问const
的{{1}}版本会返回operator[]
引用。这样您就无法修改其内容。它是const
,所以这是有道理的。
2)您不应该决定删除const
,因为它更快&#34;。您需要确定哪些语义适合您的代码。但是你可以获得const
参考:
const
或制作副本:
const cv::RotatedRect& newrotrect = vec1[cntr].second;