jla*_*ack 2 c++ const reference vector const-method
我很难弄清楚如何从const类方法返回non-const对元素的引用std::vector.我想要的一个简单例子是,
template<class T>
class MyClass
{
public:
MyClass : myVec(3)
{
}
T& x() const
{
return *(myVec.data())[0]
}
std::vector<T> myVec;
}
Run Code Online (Sandbox Code Playgroud)
我想要的行为是,我希望能够做到以下几点,
MyClass obj<double>;
obj.x() = 3.3;
assert(obj.x()==3.3)
Run Code Online (Sandbox Code Playgroud)
Eigen给出了相同类型的行为,但我无法弄清楚如何让它工作.
son*_*yao 10
你可以使用const_cast,它会在这里完成工作,(根据发布的用法).但在这种情况下你不需要它(对大多数情况而言).
您可以(并且应该)为它添加非const成员函数重载.然后const成员函数返回对const的引用,非const成员函数返回对非const的引用.将通过重载解析调用适当的一个.
const T& x() const
{
return myVec[0];
}
T& x()
{
return myVec[0];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
882 次 |
| 最近记录: |