我对 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++ 还很陌生,我仍在努力解决问题。感谢您提供任何帮助(特别是如果我在某处犯了愚蠢或初学者的错误,我觉得我确实做到了),如果您需要更多信息,我很乐意提供。