1

このリンカ エラーが発生し、それを乗り越えるのに少し苦労しています。

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 ファイルが再作成されることがわかっています。

経験豊富な人が問題を特定できるように、ここで十分な情報を提供しましたか? そうでない場合、他にどこを見ればよいですか?

4

2 に答える 2

2

テンプレート クラス/メソッドの定義は、ヘッダー ファイルで使用できる必要があります。

于 2012-05-13T13:30:56.377 に答える
1

テンプレート化された関数が宣言されたヘッダー ファイルで定義する必要があります。

于 2012-05-13T13:23:13.417 に答える