일반 원형 버퍼 템플릿을 만들려고하는데 이해할 수없는 구문 오류가 있습니다. 오류는 내 생성자에 있지만, 같은 방법으로 소멸자를 매개 변수화 한 것처럼 보일뿐입니다. 나는 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
하나의 인스턴스에'CircBuf' 대신'CircBuff'를 썼습니다. 이것이 컴파일러가 알려주려는 것입니다. –