2012-06-07 4 views
5

일반 원형 버퍼 템플릿을 만들려고하는데 이해할 수없는 구문 오류가 있습니다. 오류는 내 생성자에 있지만, 같은 방법으로 소멸자를 매개 변수화 한 것처럼 보일뿐입니다. 나는 Stroustrup C++의 예제를 따라 갔고, 스코프 해석 연산자와 함수 이름 앞에서 매개 변수를 사용합니다. 필자는 하나의 파일 만 컴파일하기 때문에 순환 종속성이 없다는 것도 확신합니다. 또한 구현 및 선언은 동일한 파일 (CircBuf.h)에 있으며 해당 .cpp 파일이 없으므로 연결도 문제가되지 않습니다. this 솔루션에 따라 "인라인"키워드를 추가하려고 시도했지만 동일한 오류가 발생합니다.템플릿 클래스의 생성자 구문

/* CircBuf.h */ 
template<typename T> class CircBuf { 
    // don't use default ctor                                    
    CircBuf(); 

    int size; 
    T *data; 
public: 
    CircBuf(int); 
    ~CircBuf(); 
}; 

template<typename T> CircBuff<T>::CircBuf<T>(int i) { 
    data = new T[i]; 
} 
template<typename T> CircBuf<T>::~CircBuf<T>() { 
    delete data; 
} 

메이크

all: 
     g++ -g -pedantic CircBuf.h -o prog 

컴파일러 오류

CircBuf.h:13:22: error: ‘CircBuff’ does not name a type 
+5

하나의 인스턴스에'CircBuf' 대신'CircBuff'를 썼습니다. 이것이 컴파일러가 알려주려는 것입니다. –

답변

9

CircBuff 확실히 유형의 이름이없는, 당신이 의도 한 종류의 이름은 하나의 fCircBuf입니다.

생성자와 소멸자 모두에서 후행 <T>도 풀어야합니다.

+3

와우 나는 방금 실수를했다는 것을 믿을 수 없다. – xst

+0

CircBuf.h : 15 : 22 : 오류 : 'CircBuf :: CircBuf'가 생성자의 이름을 지정하지 않고 CircBuf.h : 15 : 22 : 오류 : 템플릿 CircBuf이 :: CircBuf이 (내가 INT) – xst

+0

에는 템플릿 생성자가 없습니다 템플릿. – xst