对具有私有变量的类向量使用sort

时间:2014-10-09 14:49:33

标签: c++ class sorting vector

我有一个班级

class Studentas
{
 public:
 static const int CPaz=10;
 private:
 string pavarde, vardas, grupe;
 double paz[CPaz],   // paþymiø masyvas
 np;          // paþymiø kiekis
 double vidurkis;
 double STsk;
 public:
 Studentas(): pavarde(""), vardas(""), grupe(""), np(0), STsk(1),vidurkis(0)
 { }
 double imtinp(){return np;}
 double imtipaz(int i){return paz[i];}

 void Deti(string pav, string vard, string grup, int np, int pz[],double vid);
 void grupeDETI(string grp,double vidurk){grupe=grp;vidurkis+=vidurk;}

 double iv(){return vidurkis;} <---------------------------------------THE ONES IM USING
 void isvestiVID(){vidurkis/=STsk;}
 void pridetiSK(){STsk++;}

 string ig(){return grupe;} <---------------------------------------THE ONES IM USING
 string Spausdinti(int i);
 string SpausdintiGrupes();
};
布尔我正在使用bool

myfunction(Studentas const &d1,Studentas const &d2){return (d1.iv() > d2.iv() || d1.iv()==d2.iv()     && d1.ig() < d2.ig());} 

vector<Studentas> grupe;(with whatever length)

sort(grupe.begin(), grupe.end(),myfunction);

我收到错误,&#34;无法转换这个&#39;指针来自&#39; const Studentas&#39;到学生和&#39; &#34;

编辑:我使用void函数来获取变量。

EDIT2:感谢所有的帮助,我想我只是把这个问题搞砸了。没有时间浪费,再次感谢你的帮助。

EDIT3:对我的运营商叠加层进行了愚弄,下面的方法有效。

1 个答案:

答案 0 :(得分:3)

将您的方法标记为const

double iv() const {return vidurkis;} 

这样您就可以在const个对象上调用它们,d1d2就是这样。

所有逻辑上不需要修改对象的方法都应标记为const