가상을 극복<< 연산자 오류
가상 << 연산자를 자유 함수로 사용하는 경우 개발자는 "연산자 <<: 멤버 함수와 베이스만 가상일 수 있습니다."라는 컴파일러 오류가 발생할 수 있습니다. 이 오류는 무료 함수가 가상일 수 없기 때문에 발생합니다.
이 문제를 해결하려면 클래스 내에 새 가상 멤버 함수를 도입하여 중간 계층을 추가하는 것을 고려하세요.
<code class="cpp">class MyClass { public: virtual void print(ostream& where) const; };</code>
이 가상 함수는 다음을 제공합니다. 하위 클래스의 출력 동작을 사용자 정의하는 수단입니다.
다음으로 연산자를 정의합니다<< 올바른 매개변수 순서를 갖는 자유 함수로:
<code class="cpp">ostream& operator<< (ostream& out, const MyClass& mc) { mc.print(out); return out; }</code>
이 접근 방식은 연산자<< 하위 클래스에서 가상 동작을 정의할 수 있도록 허용하면서 원하는 매개변수 순서를 갖습니다.
위 내용은 가상을 정의하는 방법 `의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!