【发布时间】:2016-12-11 22:26:43
【问题描述】:
我很难弄清楚如何从 const 类方法返回对 std::vector 中元素的 non-const 引用。我要做的一个简单例子是,
template<class T>
class MyClass
{
public:
MyClass : myVec(3)
{
}
T& x() const
{
return *(myVec.data())[0]
}
std::vector<T> myVec;
}
我想要的行为是我希望能够执行以下操作,
MyClass obj<double>;
obj.x() = 3.3;
assert(obj.x()==3.3)
Eigen 给出了相同类型的行为,但我无法弄清楚如何让它工作。
【问题讨论】:
-
@jlack 不清楚您为什么要尝试返回对常量对象的非常量引用。
-
为什么
x是常量?如果你有一个变异访问器,它不应该是 const。 -
容器中的项目是否应该因为容器是常量而存在争议。如果我有一个包含非常量指针的常量容器,那有根本的不同吗?您可以将 const-ness 视为仅适用于存在的项目,而不适用于它们的值。
标签: c++ vector reference constants const-method