我正在处理运算符重载,我收到此错误:
> member function 'getAge' not viable: 'this' argument has type 'const
> Etudiant', but function is not marked const
但我不明白,因为我的课程已超出我的方法。 我有3个文件:
我的标题文件:
class Etudiant
{
string nom;
string prenom;
int age;
public:
Etudiant(string,string,int);
string getNom();
string getPrenom();
int getAge();
};
bool operator ==(Etudiant const& a,Etudiant const& b);
Etudiant.cpp(我实现了头方法)
Etudiant::Etudiant(string nom,string prenom,int age){
this->nom = nom;
this->prenom = prenom;
this->age = age;
}
string Etudiant::getNom(){
return this->nom;
}
string Etudiant::getPrenom(){
return this->prenom;
}
int Etudiant::getAge(){
return age;
}
bool operator == (Etudiant const& a,Etudiant const& b)
{
return (a.getAge()==b.getAge());
}
我正在测试我的应用程序的main.cpp
int main(){
Etudiant etudiant("gabriel","zaafrani",25);
Etudiant etudiant2("ilan","haddad",28);
if(etudiant==etudiant2){
cout << "egale"<<endl;
}else{
cout << "different"<<endl;
}
}
谢谢
答案 0 :(得分:2)
问题是你有一个const def code(self):
for line,lists in enumerate(permutations(range(4))):
valid_list = []
for index,elements in enumerate(lists) :
if index != len(lists)-1: #list index out of range escape condition
if lists[index] - lists[index+1] == 1 or lists[index+1] - lists[index] == 1 :
break
valid_list.append(lists)
return good_items
的引用,然后你试图调用它的一个非const成员函数。如果成员函数不修改任何成员变量,则应将其标记为const。像这样:
getAccounts
答案 1 :(得分:0)
你有:
bool operator == (Etudiant const& a,Etudiant const& b)
{
return (a.getAge()==b.getAge());
}
在此函数中,a
和b
是对const
个对象的引用。但是,由于getAge()
不是const
成员函数,编译器不允许您在getAge()
或a
上调用b
。
作为一项原则,始终对访问函数的函数使用const
限定符。将修饰符函数保留为非const
成员函数。
string getNom() const;
string getPrenom() const;
int getAge() const;
相应地更新实施。