템플릿을 사용하지만 인스턴스화가 가능한 두 가지 클래스의 인스턴스를 만들려고합니다.
하나의 템플릿 인수를 가진 SepChaining 클래스의 정의가 E
있습니다.
template <typename E>
class Container {
...
}
이것은 내 헤더 파일입니다.
template <typename E>
class SepChaining : public Container<E> {
...
그리고 내 main.cpp에는 할 수있는 옵션이 있습니다.
SepChaining<int>* c = nullptr;
c = new SepChaining<int>;
과
c = new SepChaining<int, 13>;
물론 두 번째 문에 대한 오류가 발생하여 템플릿 인수가 너무 많다는 오류 메시지가 표시되지만 매개 변수가 2 개인 클래스 인스턴스를 만들려면 해당 옵션을 구현하는 방법도 필요합니다. 부분 템플릿 전문화에 대해 읽었지만 구현 방법을 잘 모르겠습니다.
어떤 도움을 주시면 감사하겠습니다!
다음과 같이 템플릿을 정의 할 수 있습니다.
template <typename E, size_t S = 7>
class SepChaining : public Container<E> {
...
}
그런 다음 제안한대로 인스턴스화 할 수 있습니다.
// use default value for S that is 7
c1 = new SepChaining<ElementType>;
과
// specify S = SIZE explicitly
c2 = new SepChaining<ElementType, SIZE>;
원인 c1과 c2는 SIZE가 7이 아니면 다른 유형을 갖습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다