파생 클래스가 템플릿으로부터 인스턴스화될 때 컴파일러는 기본 클래서의 내용에 대해 아무것도 모르는 것으로 가정합니다. 따라서 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
}
};
template<typename T>
class SolutionOne : public Base <T>
{
public:
void foo()
{
this->func_of_base();
}
};
template<typename T>
class SolutionTwo : public Base <T>
{
public:
using Base<T>::func_of_base;
void foo()
{
func_of_base();
}
};