我在使用[]运算符分配值时遇到问题,我有2个不同的错误,
“二进制'=':找不到使用'double'类型的右侧操作数的运算符(或者没有可接受的转换)”
没有运算符“=”与这些操作数匹配。
我在这里想念什么吗?
header
Class CMyVector{
public:
double operator[](const int index) const;
double & operator[](const int index);
CMyVector operator+(const CMyVector mv1);
}
cpp
double CMyVector::operator[](const int index) const
{
return arr[index];
}
double & CMyVector::operator[](const int index)
{
return arr[index];
}
CMyVector CMyVector::operator+(const CMyVector mv1)
{
CMyVector *retval = new CMyVector();
retval[0] = arr[i] + mv1[i];
return *this;
}
最佳答案
CMyVector::operator+
似乎很奇怪。
1. retval
是一个指针(即CMyVector *
),那么retval[i]
将是CMyVector
,这对retval[i] = arr[i] + mv1[i];
毫无意义。您可能是(*retval)[i] = arr[i] + mv1[i];
。顺便说一句:这是内存泄漏,因为您没有delete
指针。
2.您new
一个指针retval
,然后为其设置值,最后返回*this
?这没有道理。您可能的意思是:
CMyVector CMyVector::operator+(const CMyVector& mv1)
{
CMyVector retval;
for (int i = 0;i < dim;i++)
{
retval[i] = arr[i] + mv1[i];
}
return retval;
}
关于c++ - 重载支架运算符(operator)分配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36479192/