У меня возникла проблема в шаблоне функции, из-за которой я пытаюсь создать экземпляр своей функции в Functions.cpp
.Но сделав это, я получаю ошибку компиляции.Ниже ошибка, которую я получил.Если кто-нибудь сможет помочь, буду очень признателен!Спасибо!
Ошибка
Functions.cpp:81:15: error: template-id ‘remove<int>’ for ‘int
CS150::remove(int*, int*, int*)’ does n template declaration
template int remove<int>(int *first, int*last, int* val);
^~~~~~~~~~~
Functions.cpp:56:5: note: candidate is: template<class T> T*
CS150::remove(T*, T*, T*)
T* remove(T *first, T *last, T* val)
^~~~~~
Function.cpp
template <typename T>
T* remove(T *first, T *last, T* val)
{
T result = first;
while (first!=last)
{
if (!(*first == val))
{
*result = *first;
++result;
}
++first;
}
return result;
}
template int remove<int>(int *first, int*last, int* val);
Functions.h
template <typename T>
T* remove(T *first, T *last, const T& val);
файл драйвера
static void TestRemove1(void)
{
cout << "***** Remove1 *****" << endl;
int i1[] = { 5, -7, 4, 10, -21, 15, 9 };
int size = sizeof(i1) / sizeof(int);
CS150::display(i1, i1 + size);
int item = -1;
int * newend = CS150::remove(i1, i1 + size, item);
cout << "remove " << item << ", new list: ";
CS150::display(i1, newend);
}
static void TestRemove2(void)
{
cout << "***** Remove2 *****" << endl;
int i1[] = {5, -7, 4, 10, -7, 15, 9};
int size = sizeof(i1) / sizeof(int);
CS150::display(i1, i1 + size);
int item = -7;
int *newend = CS150::remove(i1, i1 + size, item);
cout << "remove " << item << ", new list: ";
CS150::display(i1, newend);
}