У меня есть проект C ++ в VS 2015. Я создал шаблонную функцию в одном классе.
TressPos.h
class TressPos
{
//constructor
//destructor
template <typename T>
void GetNewVector(T* t, int scale);
}
TressPos.cpp
template <typename T>
void TressPos::GetNewVector(T* t, int scale)
{
//Do somethings here..
//....................
}
Теперь в другом классе.
DigitalMaster.cpp
TressPos tp;
void DigitalMaster::NesterLock()
{
tp.GetNewVector(this, 1200);
//More todo's here...
//................
tp.GetNewVector(.....);
}
Теперь, когда я строю проект, он выдает ошибку компоновщика.
По сути, жалуется, что GetNewVector может 'в качестве первого аргумента не принимать указатель на DigitalMaster.
Так что я сделал, чтобы переместить функцию шаблона как встроенную в класс TressPos.
TressPos.h
class TressPos
{
//constructor
//destructor
template <typename T>
inline void TressPos::GetNewVector(T* t, int scale)
{
//Do somethings here..
//....................
}
}
Теперь я не получаю никакой ошибки компоновщика при вызове этой шаблонной функции в классе DigitalMaster.
Но по какой-то причине Visual Studio считает, что в классе TressPos нет функции, вызываемой в GetNewVector.Хотя и компилятор, и компоновщик счастливы.
, то есть в визуальном редакторе stuido, он рисует красную линию под функцией GetNewVector в файле DigitalMaster.cpp.
Есть идеи, что происходит?Я новичок в использовании шаблонов в C ++.