C++ 无法在使用this指针的对象上使用重载[]运算符

C++ 无法在使用this指针的对象上使用重载[]运算符,c++,operator-overloading,this,C++,Operator Overloading,This,我遇到重载+运算符和重载[]运算符的问题。[]函数在OrderedList right对象上使用时工作正常,但在和此指针一起使用时,我无法让它返回正确的值 代码在main中的工作方式如下: 列表3=列表1+列表2 其中list2在参数列表中变为“right”,我试图使用this指针获取list1下标处的值 我得到的错误是“无法在分配中将OrderedList转换为double”,但我不确定它为什么尝试分配OrderedList 非常感谢您的帮助,谢谢 OrderedList OrderedLis

我遇到重载+运算符和重载[]运算符的问题。[]函数在OrderedList right对象上使用时工作正常,但在和此指针一起使用时,我无法让它返回正确的值

代码在main中的工作方式如下: 列表3=列表1+列表2

其中list2在参数列表中变为“right”,我试图使用this指针获取list1下标处的值


我得到的错误是“无法在分配中将OrderedList转换为double”,但我不确定它为什么尝试分配OrderedList

非常感谢您的帮助,谢谢

OrderedList OrderedList::operator+(OrderedList &right)
{
    int size1 = this -> _size;
    int size2 = right.getSize();
    double x, y;
    y = right[size2];
    x = this[size1];
    OrderedList list3;
    return list3;
}

double OrderedList::operator[](int subscript) const // returns rvalue 
{
    int x = OrderedList::_size;
    if (subscript > x)
    {
        cout << "Error: number is bigger than the size of the list" << endl;
    }
    else
    {
        Node* temporary = OrderedList::getListHead();
        for (int counter = 1; counter < subscript; counter++)
        {
            temporary = temporary -> next;
        }
        double nodeValue = temporary -> item;
        return nodeValue;
    }
}
OrderedList OrderedList::operator+(OrderedList&右)
{
int size1=此->\u大小;
int size2=right.getSize();
双x,y;
y=右[尺寸2];
x=此[size1];
OrderedList列表3;
返回列表3;
}
double OrderedList::运算符[](int下标)常量//返回右值
{
int x=OrderedList::\u大小;
if(下标>x)
{
cout项;
返回nodeValue;
}
}
此->运算符[](/*此处的参数*/)
将起作用

您可以删除
这个->
,尽管它会让事情变得不那么清楚

this[size1]
将执行一些讨厌的指针运算-相当于
this+size1
:因此几乎肯定会访问您不拥有的内存)。

this->operator[](/*此处的参数*/)
将起作用

您可以删除
这个->
,尽管它会让事情变得不那么清楚

this[size1]
将执行一些讨厌的指针运算-相当于
this+size1
:因此几乎肯定会访问您不拥有的内存)。

this->operator[](/*此处的参数*/)
将起作用

您可以删除
这个->
,尽管它会让事情变得不那么清楚

this[size1]
将执行一些讨厌的指针运算-相当于
this+size1
:因此几乎肯定会访问您不拥有的内存)。

this->operator[](/*此处的参数*/)
将起作用

您可以删除
这个->
,尽管它会让事情变得不那么清楚


this[size1]
将执行一些讨厌的指针算法-相当于
this+size1
:因此几乎可以肯定地访问您不拥有的内存)。

这是一个指针,所以您为什么要尝试执行
这[size1]
它正在执行指针算法。思考:

int a[] = {0, 1};
int *b[2] = &a;
要从
b
获取实际数据,我们必须首先解除限制:

int c = (*b)[1];
同样,在这里,我们必须取消对该
的引用:

x = (*this)[size1];

这个
是一个指针,所以你为什么要尝试做这个[size1]它是在做指针运算。思考:

int a[] = {0, 1};
int *b[2] = &a;
要从
b
获取实际数据,我们必须首先解除限制:

int c = (*b)[1];
同样,在这里,我们必须取消对该的引用:

x = (*this)[size1];

这个
是一个指针,所以你为什么要尝试做这个[size1]它是在做指针运算。思考:

int a[] = {0, 1};
int *b[2] = &a;
要从
b
获取实际数据,我们必须首先解除限制:

int c = (*b)[1];
同样,在这里,我们必须取消对该的引用:

x = (*this)[size1];

这个
是一个指针,所以你为什么要尝试做这个[size1]它是在做指针运算。思考:

int a[] = {0, 1};
int *b[2] = &a;
要从
b
获取实际数据,我们必须首先解除限制:

int c = (*b)[1];
同样,在这里,我们必须取消对该的引用:

x = (*this)[size1];

@是的,我敢说会的。而且更清楚;-)作为答案,我会投赞成票。谢谢你的帮助,我确实试着去引用指针,但一定是打错了。@clcto:是的,我敢说会的。而且更清楚;-)作为答案,我会投赞成票。谢谢你的帮助,我确实试着去引用指针,但一定是打错了。@clcto:是的,我敢说会的。而且更清楚;-)作为答案,我会投赞成票。谢谢你的帮助,我确实试着去引用指针,但一定是打错了。@clcto:是的,我敢说会的。而且更清楚;-)作为答案,我将进行投票。感谢您的帮助,我确实尝试取消引用指针,但一定没有正确键入该指针。“无法在作业中将OrderedList转换为double”这是什么意思?“无法在作业中将OrderedList转换为double”这是什么意思?“无法在作业中将OrderedList转换为double”这是什么意思?“无法在作业中将OrderedList转换为double”在哪里?感谢您的帮助。我确实尝试取消引用指针,但仍然键入错误,我写的是类似于*的东西[size1]不使用括号。谢谢你的帮助。我确实尝试取消引用指针,但仍然键入错误,我写了类似于*的东西[size1],但没有使用括号。谢谢你的帮助。我尝试取消引用指针,但仍然键入错误,我写了类似*的东西[size1]不要使用括号。谢谢你的帮助。我确实尝试取消引用指针,但仍然输入错误,我写了类似于*的东西[size1],没有使用括号。