개인 템플릿으로 템플릿 클래스에 대한 포인터가있는 클래스를 정의하고 있습니다. 그런 수업의 디자인에 관한 질문이 있습니다. 보다 정확하게는 외부 클래스가 템플릿 화되어야하는지 여부입니다. 외부 클래스의 생성자에서 private 멤버를 초기화 중이므로 그렇게하는 것이 옳습니다. 다른 대안이 있습니까? 클래스 선언의 예는 아래와 같습니다 모든 제안을 환영합니다 :중첩 템플릿 클래스 디자인
#include <foo.h>
#include <bar.h>
template < class FOO_TYPE, class BAR_TYPE >
class OuterClass{
public:
OuterClass(){
this->m_pFoo = new CFoo<FOO_TYPE>();
this->m_pBar = new CBar<BAR_TYPE>();
this->m_nMyInt = 0;
}
template < class FOO_TYPE >
CFoo<FOO_TYPE> * processFoo();
template < class BAR_TYPE >
CBar<BAR_TYPE> * processBar();
~OuterClass(){
delete this->m_pFoo;
delete this->m_pBar;
}
private:
int m_nMyInt;
CFoo<FOO_TYPE> * m_pFoo;
CBar<BAR_TYPE> * m_pBar;
};
+1 "규칙 3"에 대해, 나는 그것을 놓쳤다 고 생각할 수 없다. 'processFoo'와'processBar'에 관해서는 – Mephane
입니다. 맞습니다. 외부 클래스가 템플릿 화되지 않은 경우에만 나타납니다. 게다가 전체 코드를 넣지는 않았지만 당신이 맞습니다. 복사 생성자와 할당 방법이 필요합니다. – Javier