您好,我正在尝试创建一个模板方法来按对象的 x 坐标对对象的 vector 进行排序。他们用“=”符号给我操作数错误
main 里面有一些代码,vector point2d 已经填充了数据。
vector<Point2D> point2d;
.....
point2d = sortByAscX(point2d, point2d.size());
我的模板.h
template <class T>
vector<T> sortByAscX(vector<T> a1, int size) {
for(int x=0; x<size; x++) {
for(int y=0; y<size-1; y++) {
if(a1[y].getX()<a1[y+1].getX()) {
int temp = a1[y+1].getX();
a1[y+1].setX(a1[y].getX());
a1[y].setX(temp);
}
}
}
return a1;
}
错误
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;
最佳答案
您收到此错误的原因是您正在调用 getX()
函数并试图将其设置为一个值。您需要拥有或调用 setX()
函数并通过它传递您的值。您只能使用 get 函数获取值。
关于C++模板类冒泡排序操作数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30403352/