如何从派生模板类C ++中对对象数组进行排序

时间:2016-05-10 10:30:38

标签: c++ arrays sorting templates

这里我有类ColVol的对象数组,它定义了带有int的三维点 - 类型颜色和体积(int也是如此)。如果颜色在[1,10]之间,则任务是按体积对数组进行排序。错误是the expression must be modifiable lvalue这里只是函数的声明。我不知道这里排序的类型最好,为什么 temp 变量为int, object.get_method() (时,我会发现错误,在这种情况下,数组为{{1} }为f[] and f[i].get_volume() int`)?它们属于同一类型。

1 个答案:

答案 0 :(得分:1)

您需要以下修复程序(至少要进行此编译):

将方法get_color添加到ColPoint3:

U get_color(){
    return color;
}

更改get_volume的签名:

V& get_volume() {
 ^~~~!
    return volume;
}

最后定义你的构造函数

[编辑]

至于排序,为什么不std :: sort?

std::sort(f, f + n, [](auto &lop, auto  &rop){
    return lop.get_volume() < rop.get_volume();
    });