У меня есть следующие шаблонные классы,
template <typename Real>
class Marker {
typedef Wm5::Vector3<Real> Position ;
typedef Wm5::Vector3<Real> Normal ;
typedef Wm5::Vector3<Real> Color ;
public:
Marker(int id = -1, Position position = Wm5::Vector3<Real>::ZERO, Normal normal = Wm5::Vector3<Real>::ZERO, Color color = Wm5::Vector3<Real>::ZERO)
: id_(id), position_(position), normal_(normal), color_(color), cluster_(-1) {}
~Marker() {}
private:
int id_ ;
Position position_ ;
Normal normal_ ;
Color color_ ;
int cluster_ ;
};
template <typename T>
class MarkerSet {
typedef Marker<T> MarkerT ;
typedef std::vector<MarkerT> MarkerVector ;
public:
MarkerSet::MarkerSet(int id = -1, MarkerVector markers = MarkerVector())
{id_ = id; markers_ = markers;}
MarkerSet::~MarkerSet() {}
private:
int id_ ;
MarkerVector markers_ ;
} ;
Когда я пытаюсь создать объект MarkerSet с помощью
MarkerSet<double> markerSet ;
Ошибка при получении этого компоновщика,
error LNK2001: unresolved external symbol "public: __thiscall MarkerSet<double>::MarkerSet<double>(int,class std::vector<class Marker<double>,class std::allocator<class Marker<double> > >)" (??0?$MarkerSet@N@@QAE@HV?$vector@V?$Marker@N@@V?$allocator@V?$Marker@N@@@std@@@std@@@Z)
Я был бы чрезвычайно признателен, если бы кто-нибудь дал мне указатель в правильном направлении в отношении того, что я сделал неправильно.
Edit:
Хорошо, я сузил это до чего-то довольно странного.
в .ч
MarkerSet(int id = -1, MarkerVector markers = MarkerVector())
{id_ = id; markers_ = markers;}
строит отлично
Скорее, чем в .ч
MarkerSet(int id = -1, MarkerVector markers = MarkerVector()) ;
в .cpp
template <typename T>
MarkerSet<T>::MarkerSet(int id, MarkerVector markers) {
id_ = id ;
markers_ = markers ;
}
Ошибки, как описано выше.
Есть мысли?