Item 43: Know how to access names in templatized base classes

모르핀·2021년 4월 19일
0

C++기초

목록 보기
7/7

파생 클래스가 템플릿으로부터 인스턴스화될 때 컴파일러는 기본 클래서의 내용에 대해 아무것도 모르는 것으로 가정합니다. 따라서 func_of_base가 파생된 클래스에서는 모릅니다. 이를 해결하기 위해서 다음과 같이 2가지 방법을 씁니다.

template<typename T>
class Base
{
public:
    void func_of_base() {}
};
template<typename T>
class Problem : public Base<T>
{
public:
    void foo()
    {
        func_of_base(); //compile error
    }
};
  • this pointer을 이용한 해결책
template<typename T>
class SolutionOne : public Base <T>
{
public:    
    void foo()
    {
        this->func_of_base();
    }
};
  • using 선언을 이용한 해결책
template<typename T>
class SolutionTwo : public Base <T>
{
public:
    using Base<T>::func_of_base;
    void foo()
    {
        func_of_base();
    }
};
profile
플어머

0개의 댓글