我有一个班级
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:对我的运营商叠加层进行了愚弄,下面的方法有效。
答案 0 :(得分:3)
将您的方法标记为const
:
double iv() const {return vidurkis;}
这样您就可以在const
个对象上调用它们,d1
和d2
就是这样。
所有逻辑上不需要修改对象的方法都应标记为const
。