Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c++;模板类冒泡排序操作数错误_C++_Sorting_Templates - Fatal编程技术网

C++ c++;模板类冒泡排序操作数错误

C++ c++;模板类冒泡排序操作数错误,c++,sorting,templates,C++,Sorting,Templates,您好,我正在尝试创建一个模板方法来按对象的x坐标对向量进行排序。他们给我的是带有“=”符号的操作数错误 在main中有一些代码,向量点2d已经有数据被填充 vector<Point2D> point2d; ..... point2d = sortByAscX(point2d, point2d.size()); 出现此错误的原因是调用getX()函数并试图将其设置为值。您需要拥有或调用一个setX()函数,并通过它传递值。您只能通过get函数获取值。正如@NendoTaka正确解释的

您好,我正在尝试创建一个模板方法来按对象的x坐标对向量进行排序。他们给我的是带有“=”符号的操作数错误

在main中有一些代码,向量点2d已经有数据被填充

vector<Point2D> point2d;
.....
point2d = sortByAscX(point2d, point2d.size());

出现此错误的原因是调用
getX()
函数并试图将其设置为值。您需要拥有或调用一个
setX()
函数,并通过它传递值。您只能通过get函数获取值。

正如@NendoTaka正确解释的那样,您正在尝试分配给右值。如果您想对getter/setter使用相同的函数,那么让它返回一个引用

T& getX() { ...}

尽管现在名称有点混乱,因为大多数人希望getter返回一个不可变的对象。

getX()返回什么?它不能是可赋值的值,因为这正是编译器所抱怨的。如果它返回一个X值的引用,您可以将其赋值,但如果它是常量或返回一个副本,则无法将其赋值。

getX()返回一个值。您正在将一个文本分配给另一个文本。我尝试更改为设置值,但结果是0我尝试这样做,结果生成0 int temp=a1[y+1]。getX();a1[y+1].setX(a1[y].getX();a1[y].setX(温度);你说它产生0是什么意思。在您的代码中,看起来您正在尝试交换向量的2个元素的X值。请说得更具体些。
MyTemplates.h:32:20: error: lvalue required as left operand of assignment
     a1[y+1].getX() = a1[y].getX();
                    ^
MyTemplates.h:34:18: error: lvalue required as left operand of assignment
     a1[y].getX() = temp;
T& getX() { ...}