gpt4 book ai didi

c++ - Const 方法返回对 vector 元素的非常量引用

转载 作者:太空狗 更新时间:2023-10-29 23:32:29 31 4
gpt4 key购买 nike

我很难弄清楚如何从 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给出相同类型的行为,但我一直无法弄清楚如何让它工作。

最佳答案

你可以使用 const_cast ,它将在这里完成工作(根据发布的用法)。但在这种情况下(以及大多数情况下)您不需要它。

您可以(并且应该)为其添加非常量成员函数重载。然后 const 成员函数返回对 const 的引用,非常量成员函数返回对非常量的引用。适当的将通过 overload resolution 调用。 .

const T& x() const
{
return myVec[0];
}
T& x()
{
return myVec[0];
}

关于c++ - Const 方法返回对 vector 元素的非常量引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38790352/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com