相关疑难解决方法(0)

C++模板,未定义的引用

我有一个声明如下的函数:

template <typename T> 
T read();
Run Code Online (Sandbox Code Playgroud)

并定义如下:

template <typename T>
T packetreader::read() {
    offset += sizeof(T);
    return *(T*)(buf+offset-sizeof(T)); 
}
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试在main()函数中使用它时:

packetreader reader;
reader.read<int>();
Run Code Online (Sandbox Code Playgroud)

我从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
Run Code Online (Sandbox Code Playgroud)

有人能指出我正确的方向吗?

c++ templates g++ undefined-reference

28
推荐指数
3
解决办法
3万
查看次数

标签 统计

c++ ×1

g++ ×1

templates ×1

undefined-reference ×1