私は C++ の初心者なので (通常は C# で作業していますが、現在は多少クロスプラットフォームのプロジェクトに取り組んでいます)、そのすべての概念と、コンパイル/リンクの正確な仕組みにあまり慣れていません。したがって、当然、このエラーが発生する理由はよくわかりません。私はエラーを少し調べましたが、ライブラリをリンクしたり、ヘッダーファイルで関数を宣言したりせず、その外部で定義しない場合によく発生する問題のようです。奇妙なことに、私のエラーはどちらの結果でもありません。正確なエラー テキストは次のとおりです。
" Error 1 error LNK2001: unresolved external symbol "public: __thiscall ld22::QuadNode<class ld22::DrawableObject>::QuadNode<class ld22::DrawableObject>(class sf::Rect<float>)" (??0?$QuadNode@VDrawableObject@ld22@@@ld22@@QAE@V?$Rect@M@sf@@@Z) C:\Users\Nick\Documents\Visual Studio 2010\Projects\GDCSFMLTest\GDCSFMLTest\main.obj
"
私には、ファイルの実装を作成したことがないことを伝えようとしているようです。しかし、私は持っています。main.cpp
、main.objにコンパイルされてエラーが発生するファイルにはQuadtree.h
、行で関数(技術的にはコンストラクター)を宣言する が含まQuadNode(sf::FloatRect);
れています。ファイルQuadtree.cpp
には、次のようにコンストラクターを含めQuadtree.h
て定義します。
template<class T>
ld22::QuadNode<T>::QuadNode(sf::FloatRect bounds)
{
Bounds = bounds;
}
私が言ったように、私はC ++にかなり慣れていないので、まだ物事を理解しようとしています. どんな助けでも大歓迎です (特に、私がどこかで愚かな、または初心者のエラーを犯した場合、それは私がしたように感じます)。さらに情報が必要な場合は、喜んで提供します。