2013-04-09 2 views
2

클래스 중 하나에서 템플릿을 사용하고 있지만 어떤 이유로 개체를 만들 때 얻는 오류는 다음과 같습니다. 클래스 템플릿 "Test"의 인수 목록이 없습니다. '테스트': MAIN.CPP클래스 템플릿 개체를 만들 수 없습니다.

Test object; 

컴파일러에서

template <class T> 
class Test 
{ 
private: 
    T variable; 

public: 
    Test(){cout << "CONSTRUCTOR CALLED" << endl;} 
}; 

는 다음과 같은 표시 클래스 템플릿의 사용은 템플릿 인수 목록이 필요합니다. 또한

+0

클래스가 템플릿을 사용하는 경우 템플릿 매개 변수를 지정해야합니다 (예 :'Test object;) – Nbr44

+0

'Test object '와 같은 유형으로 그것을 매개 변수화해야합니다. – Yuushi

답변

0

를 작동하지 않았다

template <class T> 
Test<T>::Test() 
{ 
    cout << "CONSTRUCTOR CALLED" << endl; 
} 

당신은 당신이 class template를 인스턴스화 할 유형을 지정해야합니다. 예를 들어 :
Test<int> object; 

당신이 vectors 같은 std library, 에서 클래스 템플릿을 사용하는 방법에 대해 생각

당신이 형 같은 int, 예를 지정해야 vector<int>. 이것은 그와 같은 근거입니다.

생성자 정의의 경우 동일한 헤더 파일에 선언과 정의를 넣어야한다는 점이 있지만 컴파일러가 정의를 찾을 수없는 경우가 있습니다. (헤더 파일의 끝에 "export"와 "#include cpp file"과 같은 다른 파일에서 선언과 정의를 분리 할 수있는 기술이 있습니다)

관련 문제