2014-03-07 73 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

相關問題