通过使用模板类,表达式必须是可修改的LVALUE

expression must be a modifiable lvalue by using template class

本文关键字:修改 LVALUE 表达式      更新时间:2023-10-16

我有一个模板向量类。这就是其中一部分的样子:

template<class Type>
class Vector
{
public:
    Vector(int size)
    {
        MyTime = new Type[size];
        m_size = size;
        m_current = -1;
    }
void set(int i,Type &data)
{
    data[i]=Mytime[i];
}
private:
    Type* MyTime;
    int m_size;
    int m_current;
};

然后,我希望使用上面的设置方法将值设置为字符串"记录"。

    for(int i=0 ; i<count ; i++)
{
    records.set(i)=dateList.get(i)+timeList3.get(i);
}

,但这给了我两个错误:1.函数调用中的参数太少。2.表达必须是可修改的LVALUE。这两个错误都出现在记录中。

"记录"的声明为:

Vector<string> records(100);

这让我很困惑。我可以知道如何解决吗?

我认为records.set(i)=dateList.get(i)+timeList3.get(i);应该是这样的:

records.set(i, dateList.get(i) + timeList3.get(i));

函数呼叫中的参数太少。 - 在您的示例中,您仅通过 i,同时 set

需要两个参数

表达式必须是可修改的lvalue - set()返回void,这不是返回a 修改lvalue 的方法。。

同时,您的vector类做了一些奇怪的事情。这是一个基本的模板向量类。

template <typename T>
class Vector
{
public:
    Vector(int size) : data(new T[size]) {}
    void Set(int index, const T& val) { data[index] = val; }
    T Get(int index) { return data[index]; }
private:
    T* data;
}