> 백엔드 개발 > C++ > C에서 `getId()` 및 `getName()`이 ''const' 객체를 'this' 인수로 전달' 오류를 일으키는 이유는 무엇입니까?

C에서 `getId()` 및 `getName()`이 ''const' 객체를 'this' 인수로 전달' 오류를 일으키는 이유는 무엇입니까?

DDD
풀어 주다: 2024-12-23 20:18:15
원래의
802명이 탐색했습니다.

Why Are `getId()` and `getName()` Causing

오류: Const 객체를 'this' 인수로 전달

주어진 C 코드에서 getId에 액세스하려고 시도하는 동안 오류가 발생합니다. () 및 getName()에 저장된 객체의 멤버 함수 std::set:

<br>오류: 'const StudentT'를 'int StudentT::getId()'의 'this' 인수로 전달하면 한정자가 삭제됩니다.<br>오류: 'const 전달 StudentT'를 'std::string StudentT::getName()'의 'this' 인수로 사용하면 삭제됩니다. qualifiers<br>

이 오류는 std::set 내의 개체가 const StudentT 인스턴스로 저장된다는 사실에서 발생합니다. 이러한 const 객체에 대해 getId() 및 getName() 함수를 호출하면 컴파일러가 문제를 감지합니다.

C에서는 const가 아닌 멤버 함수가 const 객체를 수정할 수 없습니다. getId() 및 getName()은 호출된 객체를 잠재적으로 수정할 수 있는 비-const 함수입니다. 그러나 세트의 객체는 const이므로 이러한 멤버 함수를 통해 이를 수정하려고 하면 오류가 발생합니다.

해결책은 getId() 및 getName() 함수도 const로 만드는 것입니다.

int getId() const {
    return id;
}

string getName() const {
    return name;
}
로그인 후 복사

이러한 함수를 const로 만들면 해당 함수가 호출된 개체를 수정하지 않고 컴파일러가 const에서 해당 함수를 사용할 수 있음을 나타냅니다. 개체.

추가로 연산자< 비교 기능으로 의도된 용도와 일치하도록 const 참조로 사용:

inline bool operator< (const StudentT & s1, const StudentT & s2) {
    return s1.getId() < s2.getId();
}
로그인 후 복사

위 내용은 C에서 `getId()` 및 `getName()`이 ''const' 객체를 'this' 인수로 전달' 오류를 일으키는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿