-4
确定,所以我有一个名为vector_ref传递const引用导致代码中的悖论..?
class vector_ref {
public:
int* data() const { return m_data }
void retarget(std::vector<int> const& _t)
{ m_data = _t.data();
m_count = _t.size() }
private:
int* m_data;
size_t m_count;
}
我试图重新定位一个vector_ref对象到由整数填充现有矢量对象命名v和调用数据类中的一个函数()。
vector_ref<int> tmp;
tmp.retarget(const_cast<std::vector<int> const&>(v));
tmp.data(); // error here
进行重新定位编译通,但呼叫数据()得到错误:
invalid conversion from const int* to int* { m_data = v.data() ... }
这对我来说很有意义,因为成员变量m_data
不是const
,但鉴于这个类定义我怎么能retarget
到现有的vector
。如果我必须通过const
参考retarget()
,其中设置了非const
成员变量m_data
,我怎么能希望成功地编译成功重定向vector_ref
实例的代码?
你的意图是什么?通过将一个参数作为const&',你声明你不会改变它,但是你想要一个可变的指针指向它,表明你可以通过该指针来改变它。 – Justin
我正在从别人的项目中读取代码,试图找出为什么他们这样写。 – jojeyh