템플릿 클래스 상속의 공개 멤버 비가시성
다음 C 코드를 고려하세요.
<code class="cpp">class CBase { public: char Arr[32]; int Fn1(); int Fn2(); }; class CDerived : public CBase { public: int FnSum(); };</code>
이 코드에서, CDerived는 CBase의 공개 멤버를 상속합니다. 그러나 이 코드가 템플릿화되어 Arr 및 함수가 템플릿화되면 CBase의 공개 멤버가 CDerived에 표시되지 않게 됩니다.
솔루션
이 문제를 해결하기 위해 여러 가지 방법을 사용합니다. 솔루션 존재:
솔루션 문제
솔루션 #1과 #2는 코드에 장황한 추가가 필요하므로 소스가 너무 커지고 반복됩니다. 엄격한 준수를 비활성화하는 솔루션 #4는 이식성이 없으며 C 표준에서 벗어났습니다.
향상된 솔루션
코드를 단순화하려면 매크로를 사용하여 자동화할 수 있습니다. 솔루션 #3의 using 문 추가:
<code class="cpp">#define USING_CBASE(param) USING_ALL(CBase<param>, Arr, Fn1, Fn2, Fn3, Fn4, Fn5) // In CDerived<BYTES>, in a `public:` section USING_CBASE(BYTES);</code>
이 매크로는 CDerived에서 사용되는 CBase의 모든 멤버에 대해 필요한 using 문을 자동으로 생성합니다.
위 내용은 C에서 템플릿 기반 클래스의 공개 멤버에 어떻게 액세스할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!