Я пытаюсь создать общий шаблон циклического буфера, но есть некоторая синтаксическая ошибка, которую я не могу понять. Ошибка в моем конструкторе, хотя кажется, что я параметризовал деструктор таким же образом, и он работает.Я следовал примеру Stroustrup C++, и он использует параметр перед оператором разрешения области видимости, а также в имени функции, как и я. Я также уверен, что циклических зависимостей нет, потому что я компилирую только один файл. Кроме того, реализация и объявления находятся в одном файле (CircBuf.h), и нет соответствующего файла .cpp, поэтому связывание также не должно быть проблемой. Я попытался добавить ключевое слово «inline» в соответствии с этим решением и получил ту же ошибку.
/* CircBuf.h */
template class CircBuf {
// don't use default ctor
CircBuf();
int size;
T *data;
public:
CircBuf(int);
~CircBuf();
};
template CircBuff::CircBuf(int i) {
data = new T[i];
}
template CircBuf::~CircBuf() {
delete data;
}
makefile
all:
g++ -g -pedantic CircBuf.h -o prog
ошибка компилятора
CircBuf.h:13:22: error: ‘CircBuff’ does not name a type