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