通过使用模板类,expression必须是可修改的左值

时间:2014-03-07 06:21:49

标签: c++

我有一个模板矢量类。这就是它的一部分:

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;
};

然后我希望使用上面的set方法将值设置为字符串“records”。

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

但它给了我两个错误: 1.函数调用中的参数太少。 2.表达式必须是可修改的左值。 这两个错误都出现在records.set(i)。

“记录”的声明是:

Vector<string> records(100);

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

1 个答案:

答案 0 :(得分:1)

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

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

函数调用中的参数太少。 - 在您的示例中,您只传递i,同时set需要两个参数

表达式必须是可修改的左值 - set()返回void,它不是返回可修改的左值的方法。

与此同时,你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;
}