특정 유형 매개 변수 만 허용하는 템플릿 클래스()를 만들고 싶습니다 (단 double
및 float
). 일반적으로 템플릿은 사용자 코드에서 어떻게 인스턴스화 될지 알 수 없으므로 헤더 파일 (.h
)에 구현됩니다. 이 경우,과 같이 구현 파일 (.cpp
)의 클래스를 구현하는 것이 더 의미가 있습니다 :C++에서 인스턴스화 된 템플릿 클래스의 헤더를 작성하려면 어떻게해야합니까?
// Foo.cpp:
template <class T>
class Foo
{
// Insert members here
};
typedef Foo<double> Foo_d;
typedef Foo<float> Foo_f;
이 인스턴스화 foo.cpp에 컴파일 할 때 클래스를 컴파일합니다. 그렇다면 Foo_d
및 Foo_f
에 대한 별도의 선언을 작성하지 않고 헤더 파일에이 선언을하는 방법은 무엇입니까?
이 질문에 대답하지 않지만 C++ 소스 파일의 이름을'.c' 확장자로 지정하는 것은 바람직하지 않습니다. –
가능성이있는 복제본 : http://stackoverflow.com/questions/874298/c-templates-that-accept-only-certain-types이 질문은 특정 유형의 입력 만 허용하는 방법을 보여줍니다. 사용자가 직접 선언해야합니다. 사용자가 허용하는 것 이외의 다른 것을 시도하면 오류가 발생합니다. – tpg2114
@Michael 그 말은 바보 같은 실수였습니다. – Matt