gpt4 book ai didi

c++ - 重载括号运算符赋值

转载 作者:行者123 更新时间:2023-11-30 01:11:03 24 4
gpt4 key购买 nike

我在使用 [] 运算符赋值时遇到问题,我有 2 个不同的错误,

“二进制‘=’:未找到接受类型为‘double’的右侧操作数的运算符(或没有可接受的转换)”

没有运算符“=”匹配这些操作数。

我是不是漏掉了什么?

标题

 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.你新建一个指针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++ - 重载括号运算符赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36479192/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com