gpt4 book ai didi

c++ - C2440 无法将 int 转换为 int &

转载 作者:行者123 更新时间:2023-11-28 01:50:06 25 4
gpt4 key购买 nike

我的代码遇到了一些问题。我想我错过了一些指针,但找不到它。

这是我的类(class)代码:

template <class T, class U>
class KeyValue

{
private:
T _key;
U _value;
public:


KeyValue();
KeyValue(T key, U value)
{
this->_key = key;
this->_value = value
};
T GetKey() { return this->_key; }
U GetValue() { return this->_value; }

};

错误发生在:

template<class T, class U>
inline U & SparseArray<T, U>::operator[](T key)
{
for (std::list<KeyValue<T, U>>::iterator it = list->begin(); it != list->end(); it++)
{
if (it->GetKey() == key)
{
return it->GetValue();
}
}

return (list->insert(list->begin(), KeyValue<T, U>(key, U())))->GetValue();
}

最佳答案

GetValue() 按值返回,这意味着它给你一个 prvalueprvalue 是在完整表达式末尾超出范围的临时对象。因此,您不能将 左值引用 绑定(bind)到它,这就是您的返回类型 (U &)。

如果您想返回对底层 _key 的引用,则 GetValue() 需要返回一个左值引用,例如

T& GetKey() { return this->_key; }

关于c++ - C2440 无法将 int 转换为 int &,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43351735/

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