Estoy tratando de crear una plantilla de memoria circular genérica, pero hay algunos errores de sintaxis que no puedo entender. El error está en mi constructor, aunque parece que he parametrizado el destructor de la misma manera y eso funciona. He seguido el ejemplo en Stroustrup C++, y él usa un parámetro antes del operador de resolución del alcance y también en el nombre de la función, tal como yo lo hice. También estoy seguro de que no hay dependencias circulares porque solo estoy compilando un archivo. Además, la implementación y las declaraciones están en el mismo archivo (CircBuf.h) y no hay un archivo .cpp correspondiente, por lo que tampoco debería haber problemas de enlace. Intenté agregar la palabra clave "en línea" según la solución this y recibí el mismo error.Sintaxis para el constructor en la clase de plantilla
/* 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;
}
makefile
all:
g++ -g -pedantic CircBuf.h -o prog
compilador de error
CircBuf.h:13:22: error: ‘CircBuff’ does not name a type
Usted escribió 'CircBuff' en lugar de' CircBuf' en una instancia. Esto es lo que el compilador intenta decirle. –