我有一个模板矢量类。这就是它的一部分:
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);
这让我很困惑。我可以知道如何解决它吗?
答案 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;
}