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

标签 c++ sorting templates

您好,我正在尝试创建一个模板方法来按对象的 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/

相关文章:

python - Numpy 的 argsort 是确定性的吗?

javascript - 如何在 JavaScript 中按字母顺序对数组中的姓氏进行排序和格式化

c++ - 基于概念的模板成员函数重载

c++ - 重载 += 或 -= 运算符的好处

c++ - 初始化参数时会发生什么? C++

c++ - 如果我对 C++ 的理解有误,请纠正我

c++以十六进制显示时从整数变量中取半字

c++ - "new"运算符和 "new"函数之间的区别

c - 不使用指针对多维数组进行排序

javascript - 如何计算并显示每个树表分支的内部元素数量?