클래스 cat { 공공의: void walk () { printf ( "고양이는 걷고 있습니다 \ n"); } }; int main () { 고양이 bigcat; void (cat ::*pcat) (); pcat = & cat :: Walk; bigcat.*pcat (); }
컴파일 오류 : bigcat.*pcat (); 명령문은 오류를 생성합니다.
솔루션 :
class cat { public: void walk() { printf("cat is walking \n"); } }; int main(){ cat bigCat; void (cat::*pcat)(); pcat = &cat::walk; bigCat.*pcat(); }이 문제를 해결하기위한 열쇠는 bigcat 표현을 보장하는 데 있습니다.*pcat ()는 적절한 우선 순위를 갖습니다. 연산자 우선 순위는 단독 연산자가 이진 연산자보다 우선한다고 지시합니다. 따라서, 포인터 투-멤버 바인딩 작업에서 함수 호출 ()의 우선 순위를 정하기 위해 괄호가 필요합니다.*.
(bigcat.*pcat) (); ^ ^
괄호 안에 함수 호출을 둘러싸는 것은 먼저 실행을 보장하고, 멤버 함수 포인터 바인딩에 이어 실행을 보장합니다. 연산자.
괄호는 연산자 우선 순위를 제어하고 올바른 실행 순서를 보장하는 데 사용될 수 있습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3