"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Const 개체가 아닌 멤버 함수에 Const 개체를 전달하면 C++에서 한정자 실격 오류가 발생하는 이유는 무엇입니까?

Const 개체가 아닌 멤버 함수에 Const 개체를 전달하면 C++에서 한정자 실격 오류가 발생하는 이유는 무엇입니까?

2025년 1월 14일에 게시됨
검색:851

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

Const 객체를 'this' 인수로 전달: 한정자 실격 오류

C에서 const 객체를 멤버 함수에 'this' 인수로 전달 "멤버 함수의 'this' 인수로 'const xxx'를 전달하면 한정자가 삭제됩니다." 오류가 발생할 수 있습니다. 이는 컴파일러가 const 객체가 아닌 멤버 함수가 객체를 수정할 수 있는 가능성을 고려하기 때문에 발생하며 이는 const 객체에 대해 금지됩니다.

문제 분석

제공된 코드에서 , 세트의 객체는 const StudentT로 저장됩니다. 루프 내에서 멤버 함수 getId() 및 getName()에 액세스할 때 객체는 const이고 멤버 함수는 const로 표시되지 않으므로 컴파일러는 이 문제를 감지합니다.

Solution

오류를 해결하려면 getId() 및 getName() 함수를 만들어야 합니다. const:

int getId() const {
    return id;
}

string getName() const {
    return name;
}

이를 사용하면 const 규칙을 위반하지 않고 const 개체에 대해 함수를 호출할 수 있습니다.

추가 참고 사항

  • 마찬가지로 연산자
inline bool operator
  • 멤버 함수에 참조(객체 대신)를 전달하는 것이 성능과 코드 정확성을 위해 바람직합니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3