2014-03-07 61 views
0

我有一个模板向量类。这是它的一部分的样子:表达式必须是可修改的左值

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.表达式必须是一个可修改的左值。 这两个错误都出现在records.set(i)。

的 “记录” 的宣言是:

Vector<string> records(100); 

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

+0

请出示records' – Brian

+0

记录宣言'的声明是:矢量记录(100) – user3368506

+0

是什么得到的定义,数据[i] =数值指明MyTime [I]应该是Mytime [i] = data [i]对不对? – michaeltang

回答

1

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

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

在函数调用太少的说法。 - 在您的例子中,你只有通过i,同时有需要set

表达必须修改的左值两个参数 - set()返回空隙,这不是一个返回修改的左值的方法。

同时,你的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; 
} 
+0

谢谢,我知道我现在错了。 – user3368506

相关问题