运算符覆盖错误

时间:2016-04-05 20:17:42

标签: c++ c++11

我正在处理运算符重载,我收到此错误:

> 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;
}
}

谢谢

2 个答案:

答案 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());
}

在此函数中,ab是对const个对象的引用。但是,由于getAge()不是const成员函数,编译器不允许您在getAge()a上调用b

作为一项原则,始终对访问函数的函数使用const限定符。将修饰符函数保留为非const成员函数。

string getNom() const;
string getPrenom() const;
int getAge() const;

相应地更新实施。

相关问题