2012-06-07 20 views
5

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 
+5

Usted escribió 'CircBuff' en lugar de' CircBuf' en una instancia. Esto es lo que el compilador intenta decirle. –

Respuesta

9

CircBuff ciertamente no nombra a un tipo, el nombre del tipo que se destinan está CircBuf con una sola f.

Tenga en cuenta que también debe perder el <T> final en el constructor y el destructor.

+3

wow No puedo creer que acabo de cometer ese error – xst

+0

CircBuf.h: 15: 22: error: 'CircBuf :: CircBuf' nombra el constructor, no el tipo CircBuf.h: 15: 22: error: y ' CircBuf 'no tiene constructores de plantilla – xst

+0

eliminé el parámetro del nombre de la función como este y funciona: plantilla CircBuf :: CircBuf (int i) – xst

Cuestiones relacionadas