Я немного новичок в 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 ++ и все еще пытаюсь разобраться.Любая помощь приветствуется (особенно если я где-то допустил глупую ошибку или ошибку новичка, что, я думаю, я сделал), и если вам нужна дополнительная информация, я был бы рад предоставить ее.