Tengo una función declarada como tal:plantillas de C++, referencia indefinida
template <typename T>
T read();
y definido de este modo:
template <typename T>
T packetreader::read() {
offset += sizeof(T);
return *(T*)(buf+offset-sizeof(T));
}
Sin embargo, cuando trato de usarlo en mi función main():
packetreader reader;
reader.read<int>();
me sale el siguiente error de g ++:
g++ -o main main.o packet.o
main.o: In function `main':
main.cpp:(.text+0xcc): undefined reference to `int packetreader::read<int>()'
collect2: ld returned 1 exit status
make: *** [main] Error 1
¿Alguien puede dirigirme en la dirección correcta?
posible duplicado de [referencia indefinida a funcionar plantilla cuando se utiliza con una cuerda (CCG)] (http: // stackoverflow.com/questions/614233/undefined-reference-to-function-template-when-used-with-string-gcc) – outis