gcc链接模板方法的错误

时间:2012-05-13 13:21:46

标签: c++ gcc linker-errors

我遇到了这个链接器错误,并且遇到了一些麻烦。

  

o/foo/bar.cc.o: In function 'foo::bar()': bar.cc:(.text+0x728): undefined reference to 'rf<PlayerInfo> Util::getClosestToGlobal<PlayerInfo>(std::vector<rf<bats::PlayerInfo>, std::allocator<rf<PlayerInfo> > >, Eigen::Matrix<double, 3, 1, 2, 3, 1>)'

Util.h文件定义:

template <class ObjectClass>
static rf<ObjectClass> getClosestToGlobal(
    std::vector<rf<ObjectClass> > objects, Eigen::Vector3d targetPosGlobal);

Util.cpp定义:

template <class ObjectClass>
rf<ObjectClass> Util::getClosestToGlobal(
    std::vector<rf<ObjectClass> > objects, Eigen::Vector3d targetPosGlobal)
{
    // ...
}

我知道我的cpp文件已成功编译,因为它会按预期重新创建.o文件。

我是否已经为更有经验的人提供了足够的信息来识别问题?如果没有,我还应该在哪儿看?

2 个答案:

答案 0 :(得分:2)

模板类/方法定义应该可用in the header file

答案 1 :(得分:1)

您需要在声明它的头文件中定义模板化函数。