C++ templates, undefined reference
问题 I have a function declared like so: template <typename T> T read(); and defined like so: template <typename T> T packetreader::read() { offset += sizeof(T); return *(T*)(buf+offset-sizeof(T)); } However, when I try to use it in my main() function: packetreader reader; reader.read<int>(); I get the following error from 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