c++ - 함수 - 템플릿 클래스란




템플릿<class>이 BaseClassA에서 파생되도록 강제 하시겠습니까? (2)

static_assert를 사용하면보다 읽기 쉬운 방식으로 컴파일 할 수 있습니다. 의 라인에 뭔가 :

class Base {};

template<class B>
class Template{
    static_assert(std::is_base_of<Base, B>::value, "B must derive from nmspc::Base");
}

B가 정확히 Base 인 경우에도 작동합니다. Base 자체가 템플릿 클래스 인 경우 더 복잡해 지지만 여전히 수행 할 수 있으며 온라인에서 많은 리소스가 있습니다.

템플릿을 특정 기본 클래스에서 강제로 실행할 수있는 가능성이 있으므로 기본 클래스 함수를 호출 할 수 있습니까?

template <class T>
void SomeManager::Add(T)
{
    T->CallTsBaseClassFunction();
    //... do other stuff
}

가장 쉬운 해결책은 예상 한 경우에만 컴파일하는 코드 스 니펫을 추가하는 것입니다.

template <class T>
void SomeManager::Add(T t)
{
    assert((Base const*)&t); // T must inherit from Base to allow T*->Base* conversion.
    t.CallTsBaseClassFunction();
    //... do other stuff
}




inheritance