Home > Backend Development > C++ > Why Does Passing a Const Object to a Non-Const Member Function Cause a Qualifier Disqualification Error in C ?

Why Does Passing a Const Object to a Non-Const Member Function Cause a Qualifier Disqualification Error in C ?

Patricia Arquette
Release: 2024-12-08 04:27:09
Original
842 people have browsed it

Why Does Passing a Const Object to a Non-Const Member Function Cause a Qualifier Disqualification Error in C  ?

Passing Const Objects as 'this' Argument: Qualifier Disqualification Error

In C , passing const objects as 'this' arguments to member functions can result in "passing 'const xxx' as 'this' argument of member function discards qualifiers" errors. This occurs because the compiler considers the possibility that non-const member functions may modify the object, which is prohibited for const objects.

Problem Analysis

In the provided code, the objects in the set are stored as const StudentT. When accessing member functions getId() and getName() within the loop, the compiler detects this issue since the objects are const and the member functions are not marked as const.

Solution

To resolve the error, the getId() and getName() functions must be made const:

int getId() const {
    return id;
}

string getName() const {
    return name;
}
Copy after login

This allows the functions to be called on const objects without violating the const rules.

Additional Notes

  • Similarly, the operator< function should be implemented as a const reference:
inline bool operator< (const StudentT &amp; s1, const StudentT &amp; s2) {
    return s1.getId() < s2.getId();
}
Copy after login
  • Passing references (instead of objects) to member functions is preferable for performance and code correctness.

The above is the detailed content of Why Does Passing a Const Object to a Non-Const Member Function Cause a Qualifier Disqualification Error in C ?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template